2015-09-17 28 views
1

JDBC To Other Databases我發現dbtable參數如下解釋:如何使用SQL查詢在dbtable中定義表?

The JDBC table that should be read. Note that anything that is valid in a FROM clause of a SQL query can be used. For example, instead of a full table you could also use a subquery in parentheses.

當我使用的代碼:

CREATE TEMPORARY TABLE jdbcTable 
USING org.apache.spark.sql.jdbc 
OPTIONS (
    url "jdbc:postgresql:dbserver", 
    dbtable "mytable" 
) 

一切都很正常,但以下幾點:

dbtable "SELECT * FROM mytable" 

導致錯誤:

enter image description here

出了什麼問題?

回答

7

由於dbtable被用作SELECT語句的源,它的表現形式對於普通的SQL查詢是有效的。如果你想使用子查詢你應該通過在括號中的查詢,並提供了一個別名:

CREATE TEMPORARY TABLE jdbcTable 
USING org.apache.spark.sql.jdbc 
OPTIONS (
    url "jdbc:postgresql:dbserver", 
    dbtable "(SELECT * FROM mytable) tmp" 
); 

將傳遞到數據庫:

SELECT * FROM (SELECT * FROM mytable) tmp WHERE 1=0