You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@drill.apache.org by te...@pentinsaari.fi on 2018/01/26 08:32:00 UTC

drill in 10 minutes tutorial problem with osx

Hi all,

I'm trying to follow the 10 minutes tutorial and I get stuck right 
away...

https://drill.apache.org/docs/drill-in-10-minutes/

Everything works just fine with my ubuntu box, but with osx, this is all 
I get

$ bin/drill-embedded
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; 
support was removed in 8.0
sun/misc/VM
apache drill 1.12.0
"just drill it"
0: jdbc:drill:zk=local> SELECT * FROM cp.`employee.json` LIMIT 3;
No current connection
0: jdbc:drill:zk=local> !list
1 active connection:
  #0  closed   jdbc:drill:zk=local
0: jdbc:drill:zk=local> !quit
java.lang.NoClassDefFoundError: Could not initialize class 
org.apache.drill.common.config.DrillConfig
	at 
org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
	at 
org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
	at 
org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
	at 
org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
	at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
	at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
	at 
sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
	at sqlline.Commands.close(Commands.java:925)
	at sqlline.Commands.quit(Commands.java:889)
	at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)
	at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at 
sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
	at sqlline.SqlLine.dispatch(SqlLine.java:742)
	at sqlline.SqlLine.begin(SqlLine.java:621)
	at sqlline.SqlLine.start(SqlLine.java:375)
	at sqlline.SqlLine.main(SqlLine.java:268)
Exception in thread "main" java.lang.NoClassDefFoundError: Could not 
initialize class org.apache.drill.common.config.DrillConfig
	at 
org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
	at 
org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
	at 
org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
	at 
org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
	at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
	at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
	at 
sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
	at sqlline.Commands.close(Commands.java:925)
	at sqlline.Commands.closeall(Commands.java:899)
	at sqlline.SqlLine.begin(SqlLine.java:649)
	at sqlline.SqlLine.start(SqlLine.java:375)
	at sqlline.SqlLine.main(SqlLine.java:268)

What's going on here? Am I missing something obvious? All help is 
appreciated!


Teemu

Re: drill in 10 minutes tutorial problem with osx

Posted by Bob Rudis <bo...@rud.is>.
I run drill in single-node cluster mode (vs standalone) on macOS and use the installation procedure in this gist to install/run it (change the drill d/l version since it's still at 10) : https://gist.github.com/hrbrmstr/82a3f74b0b353a63a09061207e9f2725

> On Jan 26, 2018, at 3:32 AM, teemu@pentinsaari.fi wrote:
> 
> Hi all,
> 
> I'm trying to follow the 10 minutes tutorial and I get stuck right away...
> 
> https://drill.apache.org/docs/drill-in-10-minutes/
> 
> Everything works just fine with my ubuntu box, but with osx, this is all I get
> 
> $ bin/drill-embedded
> Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
> sun/misc/VM
> apache drill 1.12.0
> "just drill it"
> 0: jdbc:drill:zk=local> SELECT * FROM cp.`employee.json` LIMIT 3;
> No current connection
> 0: jdbc:drill:zk=local> !list
> 1 active connection:
> #0  closed   jdbc:drill:zk=local
> 0: jdbc:drill:zk=local> !quit
> java.lang.NoClassDefFoundError: Could not initialize class org.apache.drill.common.config.DrillConfig
> 	at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
> 	at org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
> 	at org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
> 	at org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
> 	at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
> 	at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
> 	at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
> 	at sqlline.Commands.close(Commands.java:925)
> 	at sqlline.Commands.quit(Commands.java:889)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
> 	at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
> 	at sqlline.SqlLine.dispatch(SqlLine.java:742)
> 	at sqlline.SqlLine.begin(SqlLine.java:621)
> 	at sqlline.SqlLine.start(SqlLine.java:375)
> 	at sqlline.SqlLine.main(SqlLine.java:268)
> Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.apache.drill.common.config.DrillConfig
> 	at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
> 	at org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
> 	at org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
> 	at org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
> 	at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
> 	at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
> 	at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
> 	at sqlline.Commands.close(Commands.java:925)
> 	at sqlline.Commands.closeall(Commands.java:899)
> 	at sqlline.SqlLine.begin(SqlLine.java:649)
> 	at sqlline.SqlLine.start(SqlLine.java:375)
> 	at sqlline.SqlLine.main(SqlLine.java:268)
> 
> What's going on here? Am I missing something obvious? All help is appreciated!
> 
> 
> Teemu


Re: drill in 10 minutes tutorial problem with osx

Posted by Sorabh Hamirwasia <sh...@mapr.com>.
Hi Teemu,

Thanks for trying out Drill. Did you downloaded the tar-ball from provided link in the tutorial ? I just tried on osx and it's working fine for me.


From the error looks like one of the class DrillConfig is missing at runtime. Can you please check the following:

1) If the drill-common-1.12.0.jar exists under apache-drill-1.12.0/jars location which should be in your classpath?

2) If yes please also check the permission for that jar.

3) Are there multiple versions of this jar in your classpath by any chance ?


Thanks,
Sorabh


________________________________
From: teemu@pentinsaari.fi <te...@pentinsaari.fi>
Sent: Friday, January 26, 2018 12:32 AM
To: user@drill.apache.org
Subject: drill in 10 minutes tutorial problem with osx

Hi all,

I'm trying to follow the 10 minutes tutorial and I get stuck right
away...

https://urldefense.proofpoint.com/v2/url?u=https-3A__drill.apache.org_docs_drill-2Din-2D10-2Dminutes_&d=DwICAg&c=cskdkSMqhcnjZxdQVpwTXg&r=gRpEl0WzXE3EMrwj0KFbZXGXRyadOthF2jlYxvhTlQg&m=_NRyS96XPCPEV01sNaEGgWHk8mSzUH8Ux46mreI12tM&s=cW55bVqhXyTgqaWflcJvBtoEHthIX9NXCAhzphYxG9o&e=

Everything works just fine with my ubuntu box, but with osx, this is all
I get

$ bin/drill-embedded
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize;
support was removed in 8.0
sun/misc/VM
apache drill 1.12.0
"just drill it"
0: jdbc:drill:zk=local> SELECT * FROM cp.`employee.json` LIMIT 3;
No current connection
0: jdbc:drill:zk=local> !list
1 active connection:
  #0  closed   jdbc:drill:zk=local
0: jdbc:drill:zk=local> !quit
java.lang.NoClassDefFoundError: Could not initialize class
org.apache.drill.common.config.DrillConfig
        at
org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
        at
org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
        at
org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
        at
org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
        at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
        at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
        at
sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
        at sqlline.Commands.close(Commands.java:925)
        at sqlline.Commands.quit(Commands.java:889)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at
sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
        at sqlline.SqlLine.dispatch(SqlLine.java:742)
        at sqlline.SqlLine.begin(SqlLine.java:621)
        at sqlline.SqlLine.start(SqlLine.java:375)
        at sqlline.SqlLine.main(SqlLine.java:268)
Exception in thread "main" java.lang.NoClassDefFoundError: Could not
initialize class org.apache.drill.common.config.DrillConfig
        at
org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
        at
org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
        at
org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
        at
org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
        at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
        at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
        at
sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
        at sqlline.Commands.close(Commands.java:925)
        at sqlline.Commands.closeall(Commands.java:899)
        at sqlline.SqlLine.begin(SqlLine.java:649)
        at sqlline.SqlLine.start(SqlLine.java:375)
        at sqlline.SqlLine.main(SqlLine.java:268)

What's going on here? Am I missing something obvious? All help is
appreciated!


Teemu

Re: Fw: Re: drill in 10 minutes tutorial problem with osx

Posted by te...@pentinsaari.fi.
Hi all,

Sorry about the commotion. This turned out to be an environment issue; I 
was trying to run Drill with the latest Java (9) and when I switched to 
8, all seems to work just fine.

Teemu

On 2018-02-01 21:45, Sorabh Hamirwasia wrote:
> Hi Paul,
> The reason we are picking *org.apache* instead of *oadd.org.apache *is
> because using Sqlline when we search for Drilver class, it finds it 
> first
> inside *jars/drill-jdbc-1.12.0.jar* instead of
> *jars/jdbc-driver/drill-jdbc-all-1.12.0.jar* hence it loads all the 
> classes
> inside the org.apache namespace. I have already tried drill-embedded 
> and
> single node running in distributed mode on osx and it works fine for me 
> in
> both cases. It looks to be a setup specific issue on Teemu's 
> environment.
> 
> Thanks,
> Sorabh
> 
> On Wed, Jan 31, 2018 at 9:26 PM, Paul Rogers 
> <pa...@yahoo.com.invalid>
> wrote:
> 
>> Resending this since the original response went only to Teemu. 
>> Developers
>> may want to look into the potential bug discussed below.
>> - Paul
>>  Hi Teemu,
>> Thanks for posting the detailed information. Very helpful.
>> You are running Sqlline with an embedded Drillbit (that's what
>> drill-embedded) does. I suspect that you are hitting an issue due to 
>> the
>> way that Drill builds the JDBC driver. I'll explain the issue (for the
>> benefit of the Drill folks) then suggest a solution for you.
>> Drill builds a JDBC driver that includes all of Drill. But, Drill is 
>> huge
>> (200+ MB), we try to create a dependency-reduced jar. It seems that we 
>> are
>> not removing so much from the jar that it can no longer run an 
>> embedded
>> server. The problem in this case is that the jar relocates the package 
>> with
>> DrillConfig, but it looks like some other part of the code is not 
>> adjusted.
>> From the dependency-reduced-pom.xml file:
>> 
>>           <relocations>
>> 
>>             ...
>> 
>>             <relocation>
>> 
>>               <pattern>org.apache.drill.common.</pattern>
>> 
>>               
>> <shadedPattern>oadd.org.apache.drill.common.</shadedPattern>
>> 
>>             </relocation>
>> 
>> The stack trace you provided shows that the code tries to reference
>> DrillConfig in its original location: 
>> org.apache.drill.common.config.DrillConfig.
>> But, because of the relocation, it should be referenced
>> as add.org.apache.drill.common.config.DrillConfig.
>> This is clearly a bug. Would be great if someone (Kunal?) could verify
>> this and file a bug.
>> In the mean time, I'd suggest you simply run an actual Drill server, 
>> then
>> connect Sqlline to that server. You'll want to run as a server anyway 
>> to
>> use the Web UI, to see query profiles, to change your storage 
>> profiles, and
>> so on.
>> A quick check of the documentation suggests we don't actually write up
>> this use case. (Suggestion to Bridget: we should.) Here is what to do:
>> 1. Ensure you have a Zookeeper running on your machine. See [1] for 
>> hints.
>> You only need one ZK on your laptop.2. Start Drill with drillbit.sh 
>> start.
>> (See the distributed mode docs for the other commands.)3. Start 
>> Sqlline as
>> explained in [2]
>> The "out of the box" Drill config uses the "out of the box" ZK config, 
>> so
>> you should not have to do any setup. Seen the docs for how to use the 
>> web
>> console and how to stop your Drill server.
>> Another key advantage of this mode is that you can better control 
>> memory,
>> which is important as you run larger or more complex queries.
>> Thanks,
>> - Paul
>> [1] http://drill.apache.org/docs/distributed-mode-prerequisites/[2]
>> http://drill.apache.org/docs/starting-drill-in-distributed-mode/
>> 
>> 
>> 
>>     On Friday, January 26, 2018, 12:32:13 AM PST, teemu@pentinsaari.fi 
>> <
>> teemu@pentinsaari.fi> wrote:
>> 
>>  Hi all,
>> 
>> I'm trying to follow the 10 minutes tutorial and I get stuck right
>> away...
>> 
>> https://drill.apache.org/docs/drill-in-10-minutes/
>> 
>> Everything works just fine with my ubuntu box, but with osx, this is 
>> all
>> I get
>> 
>> $ bin/drill-embedded
>> Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option 
>> MaxPermSize;
>> support was removed in 8.0
>> sun/misc/VM
>> apache drill 1.12.0
>> "just drill it"
>> 0: jdbc:drill:zk=local> SELECT * FROM cp.`employee.json` LIMIT 3;
>> No current connection
>> 0: jdbc:drill:zk=local> !list
>> 1 active connection:
>>   #0  closed  jdbc:drill:zk=local
>> 0: jdbc:drill:zk=local> !quit
>> java.lang.NoClassDefFoundError: Could not initialize class
>> org.apache.drill.common.config.DrillConfig
>>     at
>> org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(
>> DrillConnectionImpl.java:124)
>>     at
>> org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(
>> DrillJdbc41Factory.java:72)
>>     at
>> org.apache.drill.jdbc.impl.DrillFactory.newConnection(
>> DrillFactory.java:69)
>>     at
>> org.apache.calcite.avatica.UnregisteredDriver.connect(
>> UnregisteredDriver.java:144)
>>     at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
>>     at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
>>     at
>> sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
>>     at sqlline.Commands.close(Commands.java:925)
>>     at sqlline.Commands.quit(Commands.java:889)
>>     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>     at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(
>> NativeMethodAccessorImpl.java:62)
>>     at
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>>     at java.base/java.lang.reflect.Method.invoke(Method.java:564)
>>     at
>> sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
>>     at sqlline.SqlLine.dispatch(SqlLine.java:742)
>>     at sqlline.SqlLine.begin(SqlLine.java:621)
>>     at sqlline.SqlLine.start(SqlLine.java:375)
>>     at sqlline.SqlLine.main(SqlLine.java:268)
>> Exception in thread "main" java.lang.NoClassDefFoundError: Could not
>> initialize class org.apache.drill.common.config.DrillConfig
>>     at
>> org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(
>> DrillConnectionImpl.java:124)
>>     at
>> org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(
>> DrillJdbc41Factory.java:72)
>>     at
>> org.apache.drill.jdbc.impl.DrillFactory.newConnection(
>> DrillFactory.java:69)
>>     at
>> org.apache.calcite.avatica.UnregisteredDriver.connect(
>> UnregisteredDriver.java:144)
>>     at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
>>     at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
>>     at
>> sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
>>     at sqlline.Commands.close(Commands.java:925)
>>     at sqlline.Commands.closeall(Commands.java:899)
>>     at sqlline.SqlLine.begin(SqlLine.java:649)
>>     at sqlline.SqlLine.start(SqlLine.java:375)
>>     at sqlline.SqlLine.main(SqlLine.java:268)
>> 
>> What's going on here? Am I missing something obvious? All help is
>> appreciated!
>> 
>> 
>> Teemu
>> 
>> 

Re: Fw: Re: drill in 10 minutes tutorial problem with osx

Posted by Sorabh Hamirwasia <so...@gmail.com>.
Hi Paul,
The reason we are picking *org.apache* instead of *oadd.org.apache *is
because using Sqlline when we search for Drilver class, it finds it first
inside *jars/drill-jdbc-1.12.0.jar* instead of
*jars/jdbc-driver/drill-jdbc-all-1.12.0.jar* hence it loads all the classes
inside the org.apache namespace. I have already tried drill-embedded and
single node running in distributed mode on osx and it works fine for me in
both cases. It looks to be a setup specific issue on Teemu's environment.

Thanks,
Sorabh

On Wed, Jan 31, 2018 at 9:26 PM, Paul Rogers <pa...@yahoo.com.invalid>
wrote:

> Resending this since the original response went only to Teemu. Developers
> may want to look into the potential bug discussed below.
> - Paul
>  Hi Teemu,
> Thanks for posting the detailed information. Very helpful.
> You are running Sqlline with an embedded Drillbit (that's what
> drill-embedded) does. I suspect that you are hitting an issue due to the
> way that Drill builds the JDBC driver. I'll explain the issue (for the
> benefit of the Drill folks) then suggest a solution for you.
> Drill builds a JDBC driver that includes all of Drill. But, Drill is huge
> (200+ MB), we try to create a dependency-reduced jar. It seems that we are
> not removing so much from the jar that it can no longer run an embedded
> server. The problem in this case is that the jar relocates the package with
> DrillConfig, but it looks like some other part of the code is not adjusted.
> From the dependency-reduced-pom.xml file:
>
>           <relocations>
>
>             ...
>
>             <relocation>
>
>               <pattern>org.apache.drill.common.</pattern>
>
>               <shadedPattern>oadd.org.apache.drill.common.</shadedPattern>
>
>             </relocation>
>
> The stack trace you provided shows that the code tries to reference
> DrillConfig in its original location: org.apache.drill.common.config.DrillConfig.
> But, because of the relocation, it should be referenced
> as add.org.apache.drill.common.config.DrillConfig.
> This is clearly a bug. Would be great if someone (Kunal?) could verify
> this and file a bug.
> In the mean time, I'd suggest you simply run an actual Drill server, then
> connect Sqlline to that server. You'll want to run as a server anyway to
> use the Web UI, to see query profiles, to change your storage profiles, and
> so on.
> A quick check of the documentation suggests we don't actually write up
> this use case. (Suggestion to Bridget: we should.) Here is what to do:
> 1. Ensure you have a Zookeeper running on your machine. See [1] for hints.
> You only need one ZK on your laptop.2. Start Drill with drillbit.sh start.
> (See the distributed mode docs for the other commands.)3. Start Sqlline as
> explained in [2]
> The "out of the box" Drill config uses the "out of the box" ZK config, so
> you should not have to do any setup. Seen the docs for how to use the web
> console and how to stop your Drill server.
> Another key advantage of this mode is that you can better control memory,
> which is important as you run larger or more complex queries.
> Thanks,
> - Paul
> [1] http://drill.apache.org/docs/distributed-mode-prerequisites/[2]
> http://drill.apache.org/docs/starting-drill-in-distributed-mode/
>
>
>
>     On Friday, January 26, 2018, 12:32:13 AM PST, teemu@pentinsaari.fi <
> teemu@pentinsaari.fi> wrote:
>
>  Hi all,
>
> I'm trying to follow the 10 minutes tutorial and I get stuck right
> away...
>
> https://drill.apache.org/docs/drill-in-10-minutes/
>
> Everything works just fine with my ubuntu box, but with osx, this is all
> I get
>
> $ bin/drill-embedded
> Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize;
> support was removed in 8.0
> sun/misc/VM
> apache drill 1.12.0
> "just drill it"
> 0: jdbc:drill:zk=local> SELECT * FROM cp.`employee.json` LIMIT 3;
> No current connection
> 0: jdbc:drill:zk=local> !list
> 1 active connection:
>   #0  closed  jdbc:drill:zk=local
> 0: jdbc:drill:zk=local> !quit
> java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.drill.common.config.DrillConfig
>     at
> org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(
> DrillConnectionImpl.java:124)
>     at
> org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(
> DrillJdbc41Factory.java:72)
>     at
> org.apache.drill.jdbc.impl.DrillFactory.newConnection(
> DrillFactory.java:69)
>     at
> org.apache.calcite.avatica.UnregisteredDriver.connect(
> UnregisteredDriver.java:144)
>     at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
>     at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
>     at
> sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
>     at sqlline.Commands.close(Commands.java:925)
>     at sqlline.Commands.quit(Commands.java:889)
>     at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>     at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62)
>     at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:564)
>     at
> sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
>     at sqlline.SqlLine.dispatch(SqlLine.java:742)
>     at sqlline.SqlLine.begin(SqlLine.java:621)
>     at sqlline.SqlLine.start(SqlLine.java:375)
>     at sqlline.SqlLine.main(SqlLine.java:268)
> Exception in thread "main" java.lang.NoClassDefFoundError: Could not
> initialize class org.apache.drill.common.config.DrillConfig
>     at
> org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(
> DrillConnectionImpl.java:124)
>     at
> org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(
> DrillJdbc41Factory.java:72)
>     at
> org.apache.drill.jdbc.impl.DrillFactory.newConnection(
> DrillFactory.java:69)
>     at
> org.apache.calcite.avatica.UnregisteredDriver.connect(
> UnregisteredDriver.java:144)
>     at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
>     at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
>     at
> sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
>     at sqlline.Commands.close(Commands.java:925)
>     at sqlline.Commands.closeall(Commands.java:899)
>     at sqlline.SqlLine.begin(SqlLine.java:649)
>     at sqlline.SqlLine.start(SqlLine.java:375)
>     at sqlline.SqlLine.main(SqlLine.java:268)
>
> What's going on here? Am I missing something obvious? All help is
> appreciated!
>
>
> Teemu
>
>

Fw: Re: drill in 10 minutes tutorial problem with osx

Posted by Paul Rogers <pa...@yahoo.com.INVALID>.
Resending this since the original response went only to Teemu. Developers may want to look into the potential bug discussed below.
- Paul
 Hi Teemu,
Thanks for posting the detailed information. Very helpful.
You are running Sqlline with an embedded Drillbit (that's what drill-embedded) does. I suspect that you are hitting an issue due to the way that Drill builds the JDBC driver. I'll explain the issue (for the benefit of the Drill folks) then suggest a solution for you.
Drill builds a JDBC driver that includes all of Drill. But, Drill is huge (200+ MB), we try to create a dependency-reduced jar. It seems that we are not removing so much from the jar that it can no longer run an embedded server. The problem in this case is that the jar relocates the package with DrillConfig, but it looks like some other part of the code is not adjusted. From the dependency-reduced-pom.xml file:

          <relocations>

            ...

            <relocation>

              <pattern>org.apache.drill.common.</pattern>

              <shadedPattern>oadd.org.apache.drill.common.</shadedPattern>

            </relocation>

The stack trace you provided shows that the code tries to reference DrillConfig in its original location: org.apache.drill.common.config.DrillConfig. But, because of the relocation, it should be referenced as add.org.apache.drill.common.config.DrillConfig.
This is clearly a bug. Would be great if someone (Kunal?) could verify this and file a bug.
In the mean time, I'd suggest you simply run an actual Drill server, then connect Sqlline to that server. You'll want to run as a server anyway to use the Web UI, to see query profiles, to change your storage profiles, and so on.
A quick check of the documentation suggests we don't actually write up this use case. (Suggestion to Bridget: we should.) Here is what to do:
1. Ensure you have a Zookeeper running on your machine. See [1] for hints. You only need one ZK on your laptop.2. Start Drill with drillbit.sh start. (See the distributed mode docs for the other commands.)3. Start Sqlline as explained in [2]
The "out of the box" Drill config uses the "out of the box" ZK config, so you should not have to do any setup. Seen the docs for how to use the web console and how to stop your Drill server.
Another key advantage of this mode is that you can better control memory, which is important as you run larger or more complex queries.
Thanks,
- Paul
[1] http://drill.apache.org/docs/distributed-mode-prerequisites/[2] http://drill.apache.org/docs/starting-drill-in-distributed-mode/

 

    On Friday, January 26, 2018, 12:32:13 AM PST, teemu@pentinsaari.fi <te...@pentinsaari.fi> wrote:  
 
 Hi all,

I'm trying to follow the 10 minutes tutorial and I get stuck right 
away...

https://drill.apache.org/docs/drill-in-10-minutes/

Everything works just fine with my ubuntu box, but with osx, this is all 
I get

$ bin/drill-embedded
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; 
support was removed in 8.0
sun/misc/VM
apache drill 1.12.0
"just drill it"
0: jdbc:drill:zk=local> SELECT * FROM cp.`employee.json` LIMIT 3;
No current connection
0: jdbc:drill:zk=local> !list
1 active connection:
  #0  closed  jdbc:drill:zk=local
0: jdbc:drill:zk=local> !quit
java.lang.NoClassDefFoundError: Could not initialize class 
org.apache.drill.common.config.DrillConfig
    at 
org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
    at 
org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
    at 
org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
    at 
org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
    at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
    at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
    at 
sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
    at sqlline.Commands.close(Commands.java:925)
    at sqlline.Commands.quit(Commands.java:889)
    at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)
    at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at 
sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
    at sqlline.SqlLine.dispatch(SqlLine.java:742)
    at sqlline.SqlLine.begin(SqlLine.java:621)
    at sqlline.SqlLine.start(SqlLine.java:375)
    at sqlline.SqlLine.main(SqlLine.java:268)
Exception in thread "main" java.lang.NoClassDefFoundError: Could not 
initialize class org.apache.drill.common.config.DrillConfig
    at 
org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:124)
    at 
org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)
    at 
org.apache.drill.jdbc.impl.DrillFactory.newConnection(DrillFactory.java:69)
    at 
org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:144)
    at org.apache.drill.jdbc.Driver.connect(Driver.java:72)
    at sqlline.DatabaseConnection.connect(DatabaseConnection.java:167)
    at 
sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:213)
    at sqlline.Commands.close(Commands.java:925)
    at sqlline.Commands.closeall(Commands.java:899)
    at sqlline.SqlLine.begin(SqlLine.java:649)
    at sqlline.SqlLine.start(SqlLine.java:375)
    at sqlline.SqlLine.main(SqlLine.java:268)

What's going on here? Am I missing something obvious? All help is 
appreciated!


Teemu