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
格式的用法請參照:
若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。
若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。