我有一个带有几何列的表,如果我使用PostGIS查询它,它会显示正确的记录:

PostGIS查询图片:

PostGIS query image

问题是当我使用Apache Drill执行查询时,因为它显示除了几何之外的所有记录都很好,它显示为null .

钻查询图像:

Drill query image

查看日志,它显示以下错误:

WARN o.a.d.e.store.jdbc.JdbcRecordReader - 忽略不受支持的列 . org.apache.drill.common.exceptions.UserException:UNSUPPORTED_OPERATION错误:您查询的列具有JDBC存储插件当前不支持的数据类型 . 该列的名称为geom_multipolygon,其JDBC数据类型为OTHER

我测试了使用 postgis-jdbc-2.2.1.jarpostgresql-42.1.4.jar 创建Drill存储插件,但显示了相同的错误 .

如果我使用:

cast(geom_multipolygon as varchar(255))

它显示了几何的varchar表示,另一个选项是获取MULTIPOLYGON文本并使用 ST_GeomFromText(geom) 转换为Drill二进制文件,但我们需要直接从PostGIS获取二进制格式,因此这些方法无法完成 .

我们已经看过这个页面:https://github.com/k255/drill-gis/issues/1但是建议的解决方案对我们不起作用,所以我认为有一种方法可以实现这一点 .

UPDATE: 我终于找到了Drill可以显示地理字段的方式,就是将PostGIS中的数据类型从几何更改为bytea . 这似乎是一个兼容性问题 . 通过这种方式,我们可以在Drill上执行地理空间查询,但在PostGIS中,这些字段不再是几何,因此无法对它们进行索引和处理 .