2016-11-30 32 views
0

我已經編寫了一個使用pyspark連接到oracle數據庫並獲取數據的程序。下面的命令工作正常,並返回表的內容:如何使用pi spark在oracle數據庫上執行select查詢?

sqlContext.read.format("jdbc") 
    .option("url","jdbc:oracle:thin:user/[email protected]:port/dbname") 
    .option("dbtable","SCHEMA.TABLE") 
    .option("driver","oracle.jdbc.driver.OracleDriver") 
    .load().show() 

現在我不想加載整個表的數據。我想加載選定的記錄。我可以指定選擇查詢作爲此命令的一部分嗎?如果是的話如何?

注意:我可以使用數據框並在其頂部執行select查詢,但我不想這樣做。請幫忙!!

回答

0

您可以使用子查詢dbtable選項

.option("dbtable", "(SELECT * FROM tableName) AS tmp where x = 1") 

Here是類似的問題,但關於MySQL

0

在一般情況下,優化器應該能夠壓低任何相關的選擇,並在那裏元素,因此,如果您現在做df.select(「a」,「b」,「c」)。其中(「d < 10」)然後通常這應該被推到oracle。您可以通過在最終數據框上執行df.explain(true)來檢查它。

相關問題