数据分析两件套ClickHouse+Metabase(一)

ClickHouse篇

安装ClickHouse

ClickHouse有中文文档, 安装简单 -> 文档
官方提供了四种包的安装方式, deb/rpm/tgz/docker, 自行选择适合自己操作系统的安装方式
这里我们选deb的方式, 其他方式看文档

sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754

echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee 
    /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update

sudo apt-get install -y clickhouse-server clickhouse-client

到这里先不慌着启动, 改一波配置
服务端配置默认地址在/etc/clickhouse-server
尽量不要直接修改config.xml, 而是在config.d子目录中新建配置文件, 易于维护和升级, 文件名随意但会按字母顺序生效
一些简单配置:

<clickhouse>
  <listen_host>::</listen_host> # 打开远程访问
  <path>xxx</path> # 表数据存储路径
  <tmp_path>xxxx</tmp_path> # 一些临时数据
  <max_server_memory_usage>21474836480</max_server_memory_usage> # 服务器进程的最大内存使用量, 根据自己情况设置
  <logger>
      <level>warning</level> # 日志级别
      <log>xxx</log> # 日志路径
      <errorlog>xxx</errorlog> # 错误日志路径
  </logger>
</clickhouse>

配置完, 启动服务

sudo service clickhouse-server start
clickhouse-client # or "clickhouse-client --password" if you've set up a password.

建表

大部分操作和mysql差不多
不过ClickHouse有一套自己的字段类型, 简单建一个表

CREATE TABLE test
(
    `column1` Date, # 日期类型
    `column2` FixedString(7), # 固定长度字符串
    `column3` UInt32, # 无符号int类型
    `column4` Nullable(String), # 可为空字符串
    `column5` Float64 # 浮点数
)
ENGINE = MergeTree()
order by column1

更多字段类型以及不同engine的作用详见文档

PySpark写入ClickHouse

spark写入ClickHouse还是很方便的
需要下载一个新的驱动包, 放到每个worker节点的jars目录下 -> 官方jdbc驱动
目前是 clickhouse-jdbc-0.4.6.jar

properties = {'driver': 'com.clickhouse.jdbc.ClickHouseDriver',
                  "socket_timeout": "300000",
                  "rewriteBatchedStatements": "true",
                  "batchsize": "1000000",
                  "numPartitions": "8",
                  'user': 'default',
                  'password': '123456', # 配置自己的用户名密码
                  'isolationLevel': 'NONE'
                  }

df = spark.read.parquet('xx') # 读一个df, 注意schema和表结构一致
df.write.jdbc(url='jdbc:clickhouse://服务器ip:8123/数据库名', table='表名', mode='append', properties=properties)

不想要监控可以省略以下步骤, 本篇到此结束

监控

ClickHouse自带各种统计表都存在system库里, 我们需要一个可视化平台接入一下比如Grafana

选择适合自己的版本下载 -> 官网下载地址
以及有其他问题可以翻阅文档 -> 官方文档
下载后解压, Grafana中默认数据源是没有ClickHouse的, 需要装一个扩展 -> 地址

grafana-cli --pluginsDir=可指定安装路径 plugins install vertamedia-clickhouse-datasource

不需要什么配置直接./bin/grafana server即可启动, 不过建议改一下web页面的端口, 默认是3000, 会和后面的metabase冲突
配置文件在conf/defaults.ini, 比如修改http_port=2999
然后在浏览器访问页面, 默认账户密码admin, admin

进来以后选Data source
在这里插入图片描述

添加数据源, 搜ClickHouse, 然后按图改名字, 填ip, 填账号密码, 然后保存即可
在这里插入图片描述

下一步直接导入一个现成的ClickHouse仪表盘 -> 地址
省流, DashboardID: 13606

页面右上角点击 import dashboard
在这里插入图片描述

填入dashboardID, 点击右侧load
在这里插入图片描述

然后选择刚添加的数据源, 导入即可

图表很多, 不一一展示了, 至此监控安装完毕
在这里插入图片描述