clickhouse的使用和技巧,僅個人


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 引擎

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秒左右

 

其它的技巧和知識,本人占時未做了解,希望大家能一起學習,一起進步

 

 

 

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM