Kunwar, Please log a JIRA case, as I asked previously. You asked a question, you got a prompt response from the developers, so now please do your side of the bargain.
Julian > On Sep 28, 2017, at 9:35 AM, Julian Hyde <[email protected]> wrote: > > Christian, > > I don’t understand. The elasticsearch5 module does not depend on the > elasticsearch2 module, only on core and linq4j. Therefore if it (and its > dependencies) are added to sqlline’s class path, it should have everything it > needs. What am I missing? > > Julian > > >> On Sep 27, 2017, at 11:02 PM, Christian Beikov <[email protected]> >> wrote: >> >> Well it's not so simple I suppose. You also need to exclude the >> elasticsearch2 maven module from the pom.xml since that one is actually >> contributing the elasticsearch client to the classpath. For the sake of >> simplicity, we could introduce profiles that only have a specific ES >> version, but that doesn't scale obviously regarding possible other version >> combinations. >> >> I can introduce a profile if you want, but a real fix as I said needs >> classloader magic like what e.g. JBoss Modules does. >> >> >> Mit freundlichen Grüßen, >> ------------------------------------------------------------------------ >> *Christian Beikov* >> Am 27.09.2017 um 20:28 schrieb Julian Hyde: >>> I agree with Christian that it’s just a problem with sqlline’s class path. >>> The simplest solution is to remove elasticsearch2 from the line that builds >>> the class path: >>> >>> for module in core cassandra druid elasticsearch2 elasticsearch5 file >>> mongodb spark splunk example/csv example/function; do >>> CP=${CP}${module}/target/classes: >>> CP=${CP}${module}/target/test-classes: >>> done >>> >>> Then sqlline will work out of the box for ES5. People who want to run ES2 >>> will have to edit the script. >>> >>> Kunwar, Can you please log a JIRA case? >>> >>> Christian, Can you you fix it? >>> >>> It’s conceivable that someone would want to combine data from an ES2 and >>> ES5 instance, but we don’t have an answer for them, whether they invoke >>> Calcite via sqlline or any other way. The incompatible libraries will >>> clash, unless there is some class-loader magic keeping them in different >>> namespaces. The right answer is probably something like Jboss modules, but >>> it’s low priority. >>> >>> Julian >>> >>> >>>> On Sep 27, 2017, at 9:29 AM, Christian Beikov <[email protected]> >>>> wrote: >>>> >>>> Depends if you want to be able to connect to an ES2 and ES5 server at the >>>> same time through sqlline. >>>> >>>> Am 27.09.2017 17:53 schrieb "Josh Elser" <[email protected]>: >>>> >>>>> A quick solution is to add some documentation around how to give a >>>>> specific version of ElasticSearch at build-time. This would help folks >>>>> build Calcite with the exact version that they want (assuming that the API >>>>> hasn't changed and the adapter actually works with that version of ES) >>>>> >>>>> We don't need to have multiple versions of ElasticSearch on the classpath >>>>> at once, right? >>>>> >>>>> On 9/27/17 2:13 AM, Christian Beikov wrote: >>>>> >>>>>> Sqlline is problematic as it will have both elastic search versions on >>>>>> the classpath. I haven't thought about that before. In the meantime you >>>>>> could remove old versions of libraries from the >>>>>> "target/fullclasspath.txt" >>>>>> file to workaround the classpath problem. >>>>>> >>>>>> @Julian Hyde: How should we deal with something like this? We'd need >>>>>> isolated "modules" instead of a flat class path for sqlline. Maybe we >>>>>> could >>>>>> build sqlline on JBoss Modules(https://github.com/jbo >>>>>> ss-modules/jboss-modules) to achieve that? >>>>>> >>>>>> >>>>>> Mit freundlichen Grüßen, >>>>>> ------------------------------------------------------------------------ >>>>>> *Christian Beikov* >>>>>> Am 27.09.2017 um 01:30 schrieb Kunwar Deep Singh Toor: >>>>>> >>>>>>> ---------- Forwarded message ---------- >>>>>>> From: Kunwar Deep Singh Toor <[email protected]> >>>>>>> Date: Mon, Sep 25, 2017 at 8:16 PM >>>>>>> Subject: ElasticSearch5 not working >>>>>>> To: [email protected] >>>>>>> >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I have been trying to connect to the ElasticSearch suing ES adapter >>>>>>> through sqlline. I was able to connect to ES 2.1.4 using the ES2 adapter >>>>>>> but when I try connecting to ES 5.1.1 using the ES5 adapter the >>>>>>> following >>>>>>> error pops up, I checked the logs for ElasticSearch and it does not >>>>>>> show a >>>>>>> connection attempt being made. >>>>>>> >>>>>>> The following is the error: >>>>>>> java.lang.NoSuchMethodError: org.elasticsearch.transport.cl >>>>>>> ient.PreBuiltTransportClient.addPlugins(Ljava/util/Collectio >>>>>>> n;Ljava/util/Collection;)Ljava/util/Collection; >>>>>>> at org.elasticsearch.transport.client.PreBuiltTransportClient.< >>>>>>> init>(PreBuiltTransportClient.java:130) >>>>>>> at org.elasticsearch.transport.client.PreBuiltTransportClient.< >>>>>>> init>(PreBuiltTransportClient.java:116) >>>>>>> at org.elasticsearch.transport.client.PreBuiltTransportClient.< >>>>>>> init>(PreBuiltTransportClient.java:106) >>>>>>> at org.apache.calcite.adapter.elasticsearch5.Elasticsearch5Sche >>>>>>> ma.open(Elasticsearch5Schema.java:119) >>>>>>> at org.apache.calcite.adapter.elasticsearch5.Elasticsearch5Sche >>>>>>> ma.<init>(Elasticsearch5Schema.java:74) >>>>>>> at org.apache.calcite.adapter.elasticsearch5.Elasticsearch5Sche >>>>>>> maFactory.create(Elasticsearch5SchemaFactory.java:56) >>>>>>> at org.apache.calcite.model.ModelHandler.visit(ModelHandler. >>>>>>> java:269) >>>>>>> at org.apache.calcite.model.JsonCustomSchema.accept(JsonCustomS >>>>>>> chema.java:45) >>>>>>> at org.apache.calcite.model.ModelHandler.visit(ModelHandler. >>>>>>> java:195) >>>>>>> at org.apache.calcite.model.ModelHandler.<init>(ModelHandler. >>>>>>> java:87) >>>>>>> at org.apache.calcite.jdbc.Driver$1.onConnectionInit(Driver. >>>>>>> java:104) >>>>>>> at org.apache.calcite.avatica.UnregisteredDriver.connect(Unregi >>>>>>> steredDriver.java:139) >>>>>>> at sqlline.DatabaseConnection.connect(DatabaseConnection.java:156) >>>>>>> at sqlline.DatabaseConnection.getConnection(DatabaseConnection. >>>>>>> java:204) >>>>>>> at sqlline.Commands.connect(Commands.java:1095) >>>>>>> at sqlline.Commands.connect(Commands.java:1001) >>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >>>>>>> ssorImpl.java:62) >>>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>>>>>> thodAccessorImpl.java:43) >>>>>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>>>>> at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHa >>>>>>> ndler.java:38) >>>>>>> at sqlline.SqlLine.dispatch(SqlLine.java:791) >>>>>>> at sqlline.SqlLine.begin(SqlLine.java:668) >>>>>>> at sqlline.SqlLine.start(SqlLine.java:373) >>>>>>> at sqlline.SqlLine.main(SqlLine.java:265) >>>>>>> >>>>>>> I have recently started working on calcite and any help would be much >>>>>>> appreciated. >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Kunwar Singh >>>>>>> >>>>>>> >>>>>> >>> >> >
