Spark无法使用查询作为表名使用jdbc将数据库表读取到数据框

时间:2018-07-24 18:45:39

标签: scala apache-spark

我正在尝试将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字符串获取。我的问题是,有人找到这样一种方法来读取带有查询的表的表名吗?还是有人看到我的代码有问题?还是另一种方式?谢谢

0 个答案:

没有答案