如何使用Pyspark JDBC连接器在Postgres上远程执行Postgres SQL函数



我想使用JDBC连接器从pyspark应用程序上执行以下查询:

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

问题是我无法使用spark.sql(QUERY)在PySpark上执行此类查询,这显然是因为postgres_function不是ANSI SQL函数,因为Spark 2.0.0.

我正在使用Spark 2.0.1和Postgres 9.4。

您唯一的选择是使用子查询:

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中调用的LL函数在获取数据后在Spark中执行。

相关内容

  • 没有找到相关文章

最新更新