暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

​MacOS 下快速体验 ClickHouse

alitrack 2021-04-02
9964

新年第一篇,先在这里给大家拜年了,祝新年快乐、阖家欢乐、身体安康、牛年大吉!

ClickHouse

ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),俄罗斯 Yandex 公司研发,Yandex 相当于美国的谷歌,是全球搜索引擎排名第二名的公司。ClickHouse 从 2009 年出现原型,在 2012 年生产可用,2016 年开源,经历了多年时间,现在已经成熟可用。

安装

直接下载编译好版本[1]

本文主要介绍的是这个快速方法。

  1. 下载官方编译好的 ClickHouse
$ curl -O 'https://builds.clickhouse.tech/master/macos/clickhouse' && chmod a+x ./clickhouse

  1. 下载 Server 配置文件
$ curl -O https://github.com/ClickHouse/ClickHouse/raw/master/programs/server/config.xml

  1. 下载 users 配置文件
$ curl -O https://github.com/ClickHouse/ClickHouse/raw/master/programs/server/users.xml

  1. 运行 Server
$ sudo ./clickhouse server

  1. 运行客户端
$ ./clickhouse client --version
ClickHouse client version 21.3.1.6016 (official build).

MacOS 下自行编译 ClickHouse

参考在 Mac OS X 中编译 ClickHouse[2]

Linux 下跨平台编译 ClickHouse

参考如何在 Linux 中编译 Mac OS X ClickHouse[3]

在 Docker 中运行 ClickHouse

$ docker run -d --name clickhouse-server -p 8123:8123 -p 9000:9000 \
 --ulimit nofile=262144:262144 yandex/clickhouse-server

更多设置,可以参照Docker Hub[4]上的指南。

导入数据

测试数据[5]是 500 万销售数据,csv 格式(7z 压缩后 119.96MB)

  1. 建表

    CREATE  table sales  (
     `Region` text NULL,
     `Country` text NULL,
     `Item Type` text NULL,
     `Sales Channel` text NULL,
     `Order Priority` text NULL,
     `Order Date` DateTime NULL,
     `Order ID` Int8 NULL,
     `Ship Date` DateTime NULL,
     `Units Sold` Int8 NULL,
     `Unit Price` FLOAT NULL,
     `Unit Cost` FLOAT NULL,
     `Total Revenue` FLOAT NULL,
     `Total Cost` FLOAT NULL,
     `Total Profit` FLOAT NULL
    ENGINE = Log

    1. 导入数据
      gzcat /data/sales_5m.csv.gz  \
      |/opt/clickhouse/clickhouse  client -d default  --format_csv_delimiter="," \
      --date_time_input_format=best_effort\
      -q 'INSERT into sales FORMAT CSVWithNames'

连接 ClickHouse Server

客户端连接 ClickHouse

  1. 直接执行语句,然后退出
$ ./clickhouse client -d default \
-q 'select Region,Country,count(1) as cnt from sales group by Region,Country'
185 rows in set. Elapsed: 0.241 sec. Processed 5.00 million rows, 223.55 MB (20.73 million rows/s., 926.68 MB/s.)

用时 0.241s,处理 500 万行数据(223.55MB),返回 185 行,速度 926.68MB/秒(2073 万行/秒)。

  1. 交互模式
$ ./clickhouse client -d default

Metabase 连接 ClickHouse

  1. Metbase 已经准备好
  2. 下载metabase-clickhouse-driver[6] 并放到 Metabase 的 plugins 目录
  3. 重启 Metabase, 添加数据库(可能需要刷新下才能看到 ClickHouse)
    1. 数据库类型:ClickHouse
    2. 主机:localhost
    3. 端口: 8123
    4. 用户名:default
    5. 密码为空
    6. 数据库:default

DBeaver 连接 Clickhouse

全部默认即可(不用设置用户名和密码,第一次需要下载 JDBC 驱动)

Superset 连接 ClickHouse

  1. Superset 已经安装好
  2. 安装必要插件
$ pip install clickhouse-driver[lz4,zstd] clickhouse-sqlalchemy

  1. 运行 Superset,配置数据库和表

iPython-SQL 与 ClickHouse

  1. 准备好了 Jupyter Notebook 或者 Jupyter Lab
  2. 安装好了 ipython-sql
  3. 安装 ClickHouse 必要的组件
pip install clickhouse-driver[lz4,zstd] clickhouse-sqlalchemy

%load_ext sql

# 下面代码需要执行一次,否则可能会报
# sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:clickhouse

from sqlalchemy.dialects import registry
registry.register(
    "clickhouse""clickhouse_sqlalchemy.drivers.http.base""dialect"
)
registry.register(
    "clickhouse.native""clickhouse_sqlalchemy.drivers.native.base""dialect"
)
%sql clickhouse://default:@localhost/default

%sql select version()
# 返回
version()
21.3.1.6016

PostgreSQL 通过 FDW 连接

除了之前介绍过的PostgreSQL 使用 clickhousedb_fdw 插件访问 ClickHouse的外,现在还有一个Go 语言版本[7]的。

参考资料

[1]

直接下载编译好版本: https://clickhouse.tech/docs/zh/getting-started/install/

[2]

在 Mac OS X 中编译 ClickHouse: https://clickhouse.tech/docs/zh/development/build-osx/

[3]

如何在Linux中编译Mac OS X ClickHouse: https://clickhouse.tech/docs/zh/development/build-cross-osx/

[4]

Docker Hub: https://hub.docker.com/r/yandex/clickhouse-server/

[5]

测试数据: http://eforexcel.com/wp/wp-content/uploads/2020/09/5m-Sales-Records.7z

[6]

metabase-clickhouse-driver: https://github.com/enqueue/metabase-clickhouse-driver/releases

[7]

Go 语言版本: https://github.com/messagebird/clickhouse-postgres-fdw



欢迎关注公众号


文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论