我正在尝试将postgres / postgis表读入Spark 2.0数据框中,就像这样。
val jdbcUrl = s"jdbc:postgresql://${host}:${port}/${dbName}"
val connectionProperties = new Properties()
connectionProperties.put("user", s"${user}")
connectionProperties.put("password", s"${password}")
connectionProperties.setProperty("Driver", "org.postgresql.Driver")
def readTable ( table: String ): DataFrame = {
spark.read.jdbc(jdbcUrl, s"(select st_astext(geom) as geom from
${table}) as t;", connectionProperties)
}
readTable("myschema.mytable")
我收到此错误:
org.postgresql.util.PSQLException:错误:“ WHERE”或附近的语法错误
我很确定这是由this question中所述的where子句添加到查询中引起的。
但是根据文档,此方法应该有效https://docs.databricks.com/spark/latest/data-sources/sql-databases.html#pushdown-query-to-database-engine
我需要使用查询作为表名,因为我需要将Postgis几何图形作为wkt字符串获取。我的问题是,有人找到这样一种方法来读取带有查询的表的表名吗?还是有人看到我的代码有问题?还是另一种方式?谢谢