2016-11-25 14 views
0

私はJDBC connectorを使用してPySparkアプリケーションからリモートのPostgresサーバ上で次のクエリを実行したい:Pygark JDBCコネクタを使用してPostgresでPostgres SQL関数をリモートで実行するには?

SELECT id, postgres_function(some_column) FROM my_database GROUP BY id 

問題は、私は明らかにpostgres_functionので、spark.sql(QUERY)を使用してPysparkに、クエリのこの種を実行することはできませんですANSI SQL関数supported since Spark 2.0.0ではありません。

私はSpark 2.0.1とPostgres 9.4を使用しています。

答えて

0

あなたが持っている唯一のオプションは、サブクエリを使用することです:

table = """ 
    (SELECT id, postgres_function(some_column) FROM my_database GROUP BY id) AS t 
""" 
sqlContext.read.jdbc(url=url, table=table) 

をが、これはデータベース側では、集計を含めた全体のクエリを実行し、結果をフェッチします。

一般に、関数がANSI SQL関数であるか、ソースデータベースに相当するものがあり、spark.sqlで呼び出される関数がデータがフェッチされた後でSparkで実行されるかどうかは関係ありません。

関連する問題