我正在尝试运行一个查询,该查询根据启用了远程过滤的geomesa hbase集群的json属性进行过滤( hbase.remote.filtering = true
). 但是,由于出现错误,查询失败 IllegalArgumentException
带错误信息 Property '$.featurePayload.properties.user' does not exist in feature type
. 有没有办法通过geomsa和hbase启用基于json属性的远程过滤?
注意:当 hbase.remote.filtering
设置为false,并在应用程序连接到geotools数据存储的客户端进行过滤,以通过查询获取要素。我的主要困惑是,在抛出异常的远程过滤上有什么不同,以及是否有让json属性过滤远程工作的方法。
这是我正在尝试运行的查询示例:
\"$.featurePayload.properties.user\" = 'someUser'
这是表架构:
INFO Describing attributes of feature 'OSMNodes'
geometry | Point (Spatio-temporally indexed)
ingestionTimestamp | Timestamp (Spatio-temporally indexed)
nextTimestamp | Timestamp
serializerVersion | String
featurePayload | String
表中的功能示例:
id,*geometry:Point:srid=4326,ingestionTimestamp:Timestamp,nextTimestamp:Timestamp,serializerVersion:String,featurePayload:String
1789928211#3165330648,POINT (-0.1844331 27.2077326),2019-12-23T03:00:00.000Z,9999-12-30T23:59:59.000Z,geojson,"{""geometry"":{""type"":""Point"",""coordinates"":[-0.1844331,27.2077326]},""id"":""3165330648"",""properties"":{""tags"":{},""changesetId"":123456,""version"":1,""uid"":1111111,""user"":""someUser"",""featureSource"":""OSM"",""sourceTimestamp"":""2014-11-03 19:40:40"",""ingestionTimestamp"":""2019-12-23 03:00:00""}}"
堆栈跟踪:
1. Caused by: java.lang.IllegalArgumentException: Property '$.featurePayload.properties.user' does not exist in feature type
2. at org.locationtech.geomesa.filter.factory.FastFilterFactory$$anonfun$1.apply(FastFilterFactory.scala:263)
3. at org.locationtech.geomesa.filter.factory.FastFilterFactory$$anonfun$1.apply(FastFilterFactory.scala:263)
4. at scala.Option.getOrElse(Option.scala:121)
5. at org.locationtech.geomesa.filter.factory.FastFilterFactory.property(FastFilterFactory.scala:262)
6. at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:139)
7. at org.geotools.filter.AttributeExpressionImpl.accept(AttributeExpressionImpl.java:347)
8. at org.geotools.filter.visitor.DuplicatingFilterVisitor.visit(DuplicatingFilterVisitor.java:118)
9. at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:318)
10. at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.org$locationtech$geomesa$filter$visitor$QueryPlanFilterVisitor$$bind(QueryPlanFilterVisitor.scala:351)
11. at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:150)
12. at org.geotools.filter.IsEqualsToImpl.accept(IsEqualsToImpl.java:149)
13. at org.locationtech.geomesa.filter.visitor.QueryPlanFilterVisitor.visit(QueryPlanFilterVisitor.scala:81)
14. at org.geotools.filter.AndImpl.accept(AndImpl.java:45)
15. at org.locationtech.geomesa.filter.factory.FastFilterFactory$.optimize(FastFilterFactory.scala:412)
16. at org.locationtech.geomesa.filter.factory.FastFilterFactory$.toFilter(FastFilterFactory.scala:401)
17. at org.locationtech.geomesa.index.iterators.IteratorCache$$anonfun$filter$2.apply(IteratorCache.scala:82)
18. at org.locationtech.geomesa.index.iterators.IteratorCache$$anonfun$filter$2.apply(IteratorCache.scala:82)
19. at org.locationtech.geomesa.utils.cache.ThreadLocalCache.getOrElseUpdate(ThreadLocalCache.scala:68)
20. at org.locationtech.geomesa.index.iterators.IteratorCache$.filter(IteratorCache.scala:82)
21. at org.locationtech.geomesa.hbase.filters.CqlTransformFilter$.deserialize(CqlTransformFilter.scala:286)
22. ... 19 more
暂无答案!
目前还没有任何答案,快来回答吧!