clickhouse安装使用

 

 

总结:clickhouse是以列来存储的,一张表的列数非常有限,数据统计的时候一般都是特定的几列。那只要读出这几列,就立刻进行计算。

类比,mysql是行存储,耗时是读行,读的行数越少越省时;clickhouse是列存储,而一张表总共就几十列,一下子就拿到目标列了,这个阶段耗时可以忽略不计。

而对于clickhouse,真正耗时是在同一列中找到操作的目标数据,而在一个列上,数据存储是连续的,且按主键顺序进行排序,可以迅速定位到所需数据,并进行计算。

 

 

一、使用docker进行安装

$ docker run -d --name clickhouse-server -e CLICKHOUSE_USER=default -e CLICKHOUSE_PASSWORD=123456 -e CLICKHOUSE_DB=rpt  -v /Users/apple/Documents/clickhouse:/var/lib/clickhouse -p 8123:8123  
-p 9000:9000 yandex/clickhouse-server

  

 

二、建表

1.进入终端

docker exec -it 容器ID clickhouse-client -h 127.0.0.1 -d default -m -u 用户名 --password  '密码'

  

 

2.选择数据库,执行sql语句

表一:

CREATE TABLE rpt_ssp_platform_hourly
(
    settled_time Date NOT NULL,
    hour UInt8 NOT NULL,
    space_id String,
    platform_space_id String,
    os UInt8 NOT NULL,
    appv String,
    sdkv String,
    state_id UInt32 DEFAULT 0,
    city_id UInt32 DEFAULT 0,
    forward UInt64 NOT NULL COMMENT '转发量',
    response UInt64 NOT NULL COMMENT '预算返回量',
    display UInt64 NOT NULL COMMENT '预算id维度展示量',
    click UInt64 NOT NULL COMMENT '预算id维度点击量',
    income Decimal(10,5) NOT NULL COMMENT '上游出价并曝光的总和',
    media_income Decimal(10,5) COMMENT '给媒体的出价并曝光的总和'
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(settled_time)
ORDER BY (settled_time, hour, space_id, platform_space_id, os, appv, sdkv, state_id, city_id)
SETTINGS index_granularity = 8192;

  

表二:

CREATE TABLE rpt_ssp_media_hourly
(
    `settled_time` Date NOT NULL,
    `hour` UInt8 NOT NULL,
    `space_id` String,
    `os` UInt8 NOT NULL,
    `appv` String,
    `sdkv` String,
    `state_id` UInt32 DEFAULT 0,
    `city_id` UInt32 DEFAULT 0,
    `request` UInt64 NOT NULL COMMENT '请求量',
    `response` UInt64 NOT NULL COMMENT '返回量',
    `display` UInt64 NOT NULL COMMENT '展示量',
    `click` UInt64 NOT NULL COMMENT '点击量',
    `income` Decimal(10, 5) NOT NULL COMMENT '上游出价并曝光的总和',
    `media_income` Decimal(10,5) COMMENT '给媒体的出价并曝光的总和'
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(settled_time)
ORDER BY (settled_time, hour, space_id, os, appv, sdkv, state_id, city_id)
SETTINGS index_granularity = 8192;

 

实际操作:

 

 

二、导入数据源

docker 导入数据:
docker exec -i clickhouse-server clickhouse-client --user=default --password=123456 -d rpt --query "INSERT INTO rpt_ssp_platform_hourly FORMAT CSV" < /Users/wangqi/Documents/rpt_ssp_platform_hourly.csv

源码安装的话导入数据:
clickhouse-client --query="INSERT INTO rpt.rpt_ssp_platform_hourly FORMAT CSV" < rpt_ssp_platform_hourly.csv

  

.csv文件的格式

 

posted @ 2025-06-06 14:07  Wolf_Stark  阅读(156)  评论(0)    收藏  举报