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