我有一个带有几何列的表,如果我使用PostGIS查询它,它会显示正确的记录:
PostGIS查询图片:
问题是当我使用Apache Drill执行查询时,因为它显示除了几何体之外的所有记录都很好,它显示为null。
钻取查询图片:
查看日志,显示以下错误:
WARN o.a.d.e.store.jdbc.JdbcRecordReader - 忽略的列是 不支持的。 org.apache.drill.common.exceptions.UserException:
UNSUPPORTED_OPERATION错误:您查询的列的数据类型为 JDBC存储插件当前不支持。专栏 name是geom_multipolygon,其JDBC数据类型是OTHER
我测试了使用 postgis-jdbc-2.2.1.jar 和 postgresql-42.1.4.jar 创建Drill存储插件,但显示了相同的错误。< / p>
如果我使用:
cast(geom_multipolygon as varchar(255))
它显示了几何体的varchar表示,另一个选项是获取MULTIPOLYGON文本并使用ST_GeomFromText(geom)
转换为Drill二进制文件,但我们需要直接从PostGIS获取二进制格式,因此这些方法无法完成。
我们已经看到了这个页面:https://github.com/k255/drill-gis/issues/1但是建议的解决方案对我们不起作用,所以我认为有一种方法可以实现这一点。
更新:我终于找到了Drill可以显示地理字段的方式,就是将PostGIS中的数据类型从 geometry 更改为 bytea 。这似乎是一个兼容性问题。通过这种方式,我们可以在Drill上执行地理空间查询,但在PostGIS中,这些字段不再是几何,因此无法对它们进行索引和处理。