基于geomesa hbase中json属性的远程过滤

deikduxw  于 2021-06-07  发布在  Hbase
关注(0)|答案(0)|浏览(348)

我正在尝试运行一个查询,该查询根据启用了远程过滤的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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题