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 <[email protected]>
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, [email protected] <
> [email protected]> 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
>
>

Reply via email to