centos 安裝clickhouse
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
sudo yum list 'clickhouse*'
sudo yum -y install clickhouse*
docker安裝可以直接克隆
https://gitee.com/pyzy/cloudcompute
clickhouse 數據類型
數據類型沒有boolean其他基本和hive一樣,詳細的看官網
clickhouse 引擎
clickhouse有很多引擎,最常用的是 MergeTree家族 還有Distributed引擎
clickhouse 創建表
clickhouse可以創建本地表,分布式表,集群表
create table test()為本地表
CREATE TABLE image_label_all AS image_label ENGINE = Distributed(distable, monchickey, image_label, rand()) 分布式表
create table test on cluster()為集群表
貼一個完整的建表語句,使用ReplicatedMergeTree引擎
CREATE TABLE metro.metro_mdw_pcg ( storekey Int32, custkey Int32, cardholderkey Int32, pcg_main_cat_id Int32, pcg_main_cat_desc String, count Int32, quartly String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/metro/metro_mdw_pcg', '{replica}') PARTITION BY (quartly, pcg_main_cat_id) ORDER BY (storekey, custkey, cardholderkey)
保證數據復制
clickhouse數據操作
增加可以使用insert;
不能修改,也不能指定刪除;
可以刪除分區,會刪除對應的數據 我使用--help看了一下有truncate table,但是沒有具體使用過,如果要全部刪除數據可以刪除表,然后在建表查數據
可以使用腳本操作
database=$1 table=$2 echo "Truncate table "$2 create=`clickhouse-client --database=$1 --query="SHOW CREATE TABLE $table" | tr -d '\\'` clickhouse-client --database=$1 --query="DROP TABLE $table" clickhouse-client --database=$1 --query="$create"
再導入數據就可以了
導入數據,clickhouse支持很多文件類型 詳細的看官方文檔,文件導入導出
貼兩個經常用的文件的導入
tsv,以"\t"隔開
clickhouse-client -h badd52c42f08 --input_format_allow_errors_num=1 --input_format_allow_errors_ratio=0.1 --query="INSERT INTO tablename FORMAT TSV"<file
csv 以","或者"|"隔開
clickhouse-client -h adc3eaba589c --format_csv_delimiter="|" --query='INSERT INTO tablename FORMAT CSV' < file
數據查詢
clickhouse的 查詢sql 表單查詢基本和標准sql一樣,也支持limit 分頁,但是inner join 的查詢寫法不一樣,而且我用4億+2000萬inner join的速度很慢
兩個sql對比 inner join要花費將近一分鍾,使用in子查詢僅3秒, 建議都使用in查詢,clickhouse的單表查詢速度很快,3億數據count distinct 僅1秒左右
其它的技巧和知識,本人占時未做了解,希望大家能一起學習,一起進步