我正在尝试使用 Postgis 将 Spark 连接到 PostgreSQL 数据库。
我这样连接:
val jdbcDF = sc.read.format("jdbc").options(
Map("url" -> "jdbc:postgresql://dbHost:5432/ticketapp?user=user&password=password",
"dbtable" -> "events",
"columnNames" -> "name")
).load()
问题是 Spark 不知道 Geometry
类型。 (我收到以下错误:SQLException:不支持的类型 1111
)
有办法让它发挥作用吗?
如果没有,是否有办法在不使用有问题的几何类型字段的情况下仍然连接到该表?我可以排除该字段以便使其正常工作而不必转储没有该字段的表吗?
最佳答案
不幸的是,Spark SQL 不知道几何类型 [1, 2]。如果您不需要有问题的字段,可以将其排除。
使用jdbc,您可以指定一个子查询,后跟临时表名,而不仅仅是表名[3]。如果您希望选择表的子集,或者在这种情况下排除字段,这非常有用。由于 SQL 中无法选择表中除某些列之外的所有列 [4],因此您需要显式列出要保留的列,如下所示:
val jdbcDF = sc.read.format("jdbc").options(
Map("url" -> "jdbc:postgresql://dbHost:5432/ticketapp?user=user&password=password",
"dbtable" -> "(select col1,col2 from events) tmp")
).load()
[1] https://issues.apache.org/jira/browse/SPARK-11526
[2]https://github.com/harsha2010/magellan/issues/31
[3]http://metricbrew.com/get-data-from-databases-with-apache-spark-jdbc/
[4]http://www.postgresonline.com/journal/archives/41-How-to-SELECT-ALL-EXCEPT-some-columns-in-a-table.html
关于postgresql - 有没有办法使用 Postgis 几何类型将 Spark 连接到表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37660029/