How to use pyspark connect with cilckhouse to read?
在本範例你會學到:
- 於 
GCP Dataproc環境中加入ru.yandex.clickhouse:clickhouse-jdbc:0.2的 jar 檔 - 於 pyspark 中對 clickhouse 進行讀取
 
在本範例你需要先準備好:
- 熟悉 gcp 環境
 - 一個以使用的 clickhouse 環境
 
1.引入 jar 檔
基本上在 spark 環境都會引入各種需要的 jar 檔來完成很多事,clickhouse 也不例外,這裡要使用的是 ru.yandex.clickhouse:clickhouse-jdbc:0.2,相關版本號請自行依需求微調:版本列表!決定好版本後我們就開始吧~
2.啟動 Dataproc
這邊我就不贅述了,就是把 jar 檔案加入 --properties 中即可,其中的格式寫法可參考稍早之前的文章 GCP 系列-新增/啟動 Dataproc clusters 時帶入多個 properties 套件,其他參數就依照自己需求調整!
gcloud dataproc clusters create clickhouse-pyspark \
    --region=global \
    --bucket my-bucket \
    --master-boot-disk-size 100GB \
    --num-workers 2 \
    --worker-boot-disk-size 500GB  \
    --worker-machine-type n1-standard-4 \
    --zone asia-east1-b  \
    --labels pro=report,user=test  \
    --image-version=1.4 \
    --metadata 'PIP_PACKAGES=configparser==4.0.2 PyMySQL==0.9.3'\
    --initialization-actions gs://dataproc-initialization-actions/python/pip-install.sh \    
    --properties 'spark:spark.jars.packages=ru.yandex.clickhouse:clickhouse-jdbc:0.2,dataproc:dataproc.monitoring.stackdriver.enable=true'
3.pyspark read data from clickhouse
這邊必須要填入 clickhouse 的 url 與 登入資訊等等資料,都查到這篇了我就預設大家手上都已經有可以正常登入的 clickhouse!
df = spark.read.format("jdbc")\
    .option("driver", "ru.yandex.clickhouse.ClickHouseDriver")\
    .option("url","jdbc:clickhouse://自行填入位置")\
    .option("user","帳號")\
    .option("password","密碼")\
    .option("dbtable",SQL語法)\
    .option("partitionColumn", "product_id")\
    .option("fetchsize", 25000)\
    .option("lowerBound", 0)\
    .option("upperBound", 24)\
    .option("numPartitions", 24)\
    .option("queryTimeout", 600)\
    .load()
上面範例的其他參數就自行所需來微調了!
今天就介紹到這吧!
參考資料
properties 格式的用法請參照:
若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。
若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。