有没有办法使用 Postgis 几何类型将 Spark 连接到 table?

Is there a way to connect Spark to a table using a Postgis Geometry type?

我正在尝试使用 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: Unsupported type 1111

有没有办法让它起作用?

如果没有,有没有办法在不使用几何类型的有问题的字段的情况下仍然连接到这个 table?我可以排除这个字段以使其工作而不必在没有这个字段的情况下转储 table 吗?

不幸的是,Spark SQL 不知道几何类型 [1, 2]。如果您不需要有问题的字段,您可以将其排除。

使用 jdbc,您可以指定一个子查询,后跟一个临时 table 名称,而不仅仅是 table 名称 [3]。如果您希望 select 您的 table 的一个子集,或者在这种情况下排除一个字段,这将很有用。由于 SQL 到 select 除了 table [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