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
>>>>>>> 
>>>>>>> 
>>>>>> 
>>> 
>> 
> 

Reply via email to