【问题标题】:How to remotely execute a Postgres SQL function on Postgres using PySpark JDBC connector?如何使用 PySpark JDBC 连接器在 Postgres 上远程执行 Postgres SQL 函数?
【发布时间】:2017-04-09 22:38:17
【问题描述】:

我想使用 JDBC connector 从 PySpark 应用程序在远程 Postgres 服务器上执行以下查询:

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。

【问题讨论】:

    标签: postgresql apache-spark jdbc pyspark apache-spark-sql


    【解决方案1】:

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

    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 中执行 spark.sql 中调用的所有函数。

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 2015-06-22
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 2020-10-09
      • 1970-01-01
      相关资源
      最近更新 更多