在Apache Spark 2.0.0 中從外部資料庫取得特定查詢結果
使用PySpark 在Apache Spark 2.0.0 中處理外部資料庫時,用戶可能希望從特定查詢中獲取數據,而不是獲取整個表。這可以增強效能並減少資料傳輸。
問題:
在以下 PySpark 程式碼中,從名為「schema.tablename」的資料庫表載入 df DataFrame 。我們如何修改程式碼以從自訂查詢的結果集中取得資料?
from pyspark.sql import SparkSession spark = SparkSession\ .builder\ .appName("spark play")\ .getOrCreate() df = spark.read\ .format("jdbc")\ .option("url", "jdbc:mysql://localhost:port")\ .option("dbtable", "schema.tablename")\ .option("user", "username")\ .option("password", "password")\ .load()
答案:
取得自訂查詢的結果集查詢,將查詢作為 Spark DataFrameReader 選項中的「dbtable」參數提供。查詢必須用括號括起來,並為臨時表名稱起別名。
... .option("dbtable", "(SELECT foo, bar FROM schema.tablename) AS tmp") ...
透過將子查詢作為「dbtable」參數傳遞,Spark 將執行查詢並將結果資料載入到 DataFrame 中。這允許使用者從外部資料庫檢索特定數據,而無需獲取整個表的開銷。
以上是如何使用 PySpark 的 JDBC 從外部資料庫取得特定查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!