pyspark系列-如何使用pyspark連結clickhouse教學

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 格式的用法請參照:

https://chilunhuang.github.io/posts/14115/

若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。

若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。


 上一篇
Django 系列- 如何在{{value}}中完整移除html tag? Django 系列- 如何在{{value}}中完整移除html tag?
How to completely remove the tags before truncating?在本範例你會學到: 部落格或網誌的文章清單中簡短顯示內容(點擊看上集) Django filters(過濾器) 的使用 stripta
2021-01-13
下一篇 
pyspark系列-如何使用pyspark連結kafka教學 pyspark系列-如何使用pyspark連結kafka教學
How to use pyspark connect with kafka to write and read?在本範例你會學到: 於 GCP Dataproc 環境中加入spark-sql-kafka 的 jar 檔 於 pyspark
2020-10-14
  目錄