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 <christian.bei...@gmail.com> 
> 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 <christian.bei...@gmail.com> 
>>> 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" <josh.el...@gmail.com>:
>>> 
>>>> 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 <kt...@g.clemson.edu>
>>>>>> Date: Mon, Sep 25, 2017 at 8:16 PM
>>>>>> Subject: ElasticSearch5 not working
>>>>>> To: dev-i...@calcite.apache.org
>>>>>> 
>>>>>> 
>>>>>> 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
>>>>>> 
>>>>>> 
>>>>> 
>> 
> 

Reply via email to