我使用Geomesa Native API在java中执行accumulo客户端。以下是java客户端代码:
package org.locationtech.geomesa.api;
import java.time.ZonedDateTime;
import java.util.*;
import org.geotools.geometry.jts.JTSFactoryFinder;
import com.google.gson.Gson;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
public class GeomesaAccumuloClient {
public static void main(String args[]){
System.out.println("hello1");
try {
GeoMesaIndex<DomainObject> index =
AccumuloGeoMesaIndex.build(
"asd",
"localhost:2181",
"hps",
"root", "9869547580",
false,
new DomainObjectValueSerializer(),
new DefaultSimpleFeatureView<DomainObject>("aj_p"));
}
catch(Throwable t) {
System.err.println("Uncaught exception is detected! " + t
+ " st: "+ Arrays.toString(t.getStackTrace()));
}
}
public static class DomainObject {
public final String id;
public final int intValue;
public final double doubleValue;
public DomainObject(String id, int intValue, double doubleValue) {
this.id = id;
this.intValue = intValue;
this.doubleValue = doubleValue;
}
}
public static class DomainObjectValueSerializer implements ValueSerializer<DomainObject> {
public static final Gson gson = new Gson();
@Override
public byte[] toBytes(DomainObject o) {
System.out.println(gson.toJson(o).toString());
return gson.toJson(o).getBytes();
}
@Override
public DomainObject fromBytes(byte[] bytes) {
return gson.fromJson(new String(bytes), DomainObject.class);
}
}
private static Date date(String s) {
return Date.from(ZonedDateTime.parse(s).toInstant());
}
}
但是当我使用命令
执行此文件时accumulo org.locationtech.geomesa.api.GeomesaAccumuloClient
我遇到以下异常:
suresh@hpss-MacBook-Air:~/accumulo-1.8.0/lib/ext $ accumulo org.locationtech.geomesa.api.GeomesaAccumuloClient
hello1
2017-03-13 00:35:26,433 [imps.CuratorFrameworkImpl] INFO : Starting
2017-03-13 00:35:26,445 [state.ConnectionStateManager] INFO : State change: CONNECTED
Uncaught exception is detected! java.lang.IllegalArgumentException: Trying to create a schema with a partial (join) attribute index on the default date field 'dtg'. This may cause whole-world queries with time bounds to be much slower. If this is intentional, you may override this message by putting Boolean.TRUE into the SimpleFeatureType user data under the key 'override.index.dtg.join' before calling createSchema. Otherwise, please either specify a full attribute index or remove it entirely. st: [org.locationtech.geomesa.utils.index.TemporalIndexCheck$$anonfun$validateDtgIndex$1.apply(GeoMesaSchemaValidator.scala:102), org.locationtech.geomesa.utils.index.TemporalIndexCheck$$anonfun$validateDtgIndex$1.apply(GeoMesaSchemaValidator.scala:98), scala.Option.foreach(Option.scala:257), org.locationtech.geomesa.utils.index.TemporalIndexCheck$.validateDtgIndex(GeoMesaSchemaValidator.scala:98), org.locationtech.geomesa.utils.index.GeoMesaSchemaValidator$.validate(GeoMesaSchemaValidator.scala:30), org.locationtech.geomesa.index.geotools.GeoMesaDataStore.createSchema(GeoMesaDataStore.scala:141), org.locationtech.geomesa.accumulo.data.AccumuloDataStore.createSchema(AccumuloDataStore.scala:129), org.locationtech.geomesa.api.AccumuloGeoMesaIndex.<init>(AccumuloGeoMesaIndex.scala:45), org.locationtech.geomesa.api.AccumuloGeoMesaIndex$.buildWithView(AccumuloGeoMesaIndex.scala:165), org.locationtech.geomesa.api.AccumuloGeoMesaIndex$.build(AccumuloGeoMesaIndex.scala:146), org.locationtech.geomesa.api.AccumuloGeoMesaIndex.build(AccumuloGeoMesaIndex.scala), org.locationtech.geomesa.api.GeomesaAccumuloClient.main(GeomesaAccumuloClient.java:15), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method), sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43), java.lang.reflect.Method.invoke(Method.java:498), org.apache.accumulo.start.Main$2.run(Main.java:157), java.lang.Thread.run(Thread.java:745)]
答案 0 :(得分:1)
我已经在GeoMesa 1.3.0和1.3.1的副本上测试了您的代码,我无法直接重现您的问题。但是,我认为正在发生的事情是你以某种方式混合了新旧罐子。在1.3.x系列中
new DefaultSimpleFeatureView<DomainObject>("aj_p")
无效,因为DefaultSimpleFeatureView不接受导致编译失败的参数。删除&#34; aj_p&#34;并且正在运行
accumulo -add ./geomesa-native-api_2.11-1.3.1.jar org.locationtech.geomesa.api.GeomesaAccumuloClient
似乎工作正常,测试表出现在我的Accumulo实例表中。
我建议您验证类路径上的jar并重新安装或下载GeoMesa jar。