2016-11-25 6 views
0

Я хочу, чтобы выполнить следующий запрос на удаленный сервер Postgres из приложения PySpark с помощью JDBC connector:Как удаленно выполнить функцию Postgres SQL в Postgres с помощью соединителя JSBC PySpark?

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

Проблема в том, что я не могу выполнить этот вид запроса на Pyspark использованием spark.sql(QUERY), очевидно потому, что postgres_function не является функцией 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 или имеет эквивалент в исходной базе данных, а функции ll, вызываемые в spark.sql, выполняются в Spark после получения данных.

 Смежные вопросы

  • Нет связанных вопросов^_^