Instead of running from sqlline, I created a sample program to run the 
program.I added the generated classpath folder into by eclipse project's 
classpath.But I got a NullPointerExceptionCaused by: 
java.lang.NullPointerException at 
org.apache.calcite.interpreter.Interpreter.<init>(Interpreter.java:74) at 
CalciteProgram151003.bind(Unknown Source) at 
org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:327)
I debugged it and found that in org.apache.calcite.jdbc.createDataContext , for 
spark it creates SlimDataContext which ignores the parameterValues passed to 
createDataContext  method.
Due to this in the generated code org.apache.calcite.rel.RelNode v0stashed = 
(org.apache.calcite.rel.RelNode) root.get("v0stashed");
the v0stashed  would be null.
So I though let me modify createDataContext to return DataContextImpl(this, 
parameterValues), even for spark.
Doing so did make the code run, but looking at the generated code and my 
eclipse's console, nothing is actually getting executed on spark. I can 
contribute to the spark-calcite project to make it work. 
I want to use spark as the engine for processing anything that I am not able to 
push down to my custom adapter so that in case of large data things don't go 
out of memory.

Thanks & Regards,Dharmendra

      From: Dharmendra Chouhan <[email protected]>
 To: "[email protected]" <[email protected]> 
 Sent: Tuesday, 29 November 2016 7:43 PM
 Subject: Using Spark engine for processing SQL syntax that cannot be pushed to 
the source system
  
Hi,
In the calcite connection property document , I saw a property SPARK. Its 
description is - "Specifies whether Spark should be used as the engine for 
processing that cannot be pushed to the source system"So I thought of testing 
it over the CSV adapter. i.e anything which is not implemented by csv adapter , 
use spark for running them. For doing this I followed below steps 
1. In pom.xml of csv adapter I added dependency of calcite-spark2. Deleted the 
target\dependencies folder3. Started sqline.bat4. Used connection string as 
!connect jdbc:calcite:model=target/test-classes/model.json;spark=true admin 
admin5. Ran sql query select * from emps;
Is my understanding of this property correct ? Am I setting things up correctly 
?Why am I getting the below exception and how to resolve it ?
    java.sql.SQLException: Error while executing SQL "select * from emps": null
        at org.apache.calcite.avatica.Helper.createException(Helper.java:56)    
    at org.apache.calcite.avatica.Helper.createException(Helper.java:41)        
at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
        at 
org.apache.calcite.avatica.AvaticaStatement.execute(AvaticaStatement.java:209)  
      at sqlline.Commands.execute(Commands.java:822)        at 
sqlline.Commands.sql(Commands.java:732)        at 
sqlline.SqlLine.dispatch(SqlLine.java:813)        at 
sqlline.SqlLine.begin(SqlLine.java:686)        at 
sqlline.SqlLine.start(SqlLine.java:398)        at 
sqlline.SqlLine.main(SqlLine.java:291)Caused by: java.lang.NullPointerException 
       at 
org.apache.calcite.interpreter.Interpreter.<init>(Interpreter.java:74)        
at Baz.bind(Unknown Source)        at 
org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:327)
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.enumerable(CalciteConnectionImpl.java:295)
        at 
org.apache.calcite.jdbc.CalciteMetaImpl._createIterable(CalciteMetaImpl.java:553)
        at 
org.apache.calcite.jdbc.CalciteMetaImpl.createIterable(CalciteMetaImpl.java:544)
        at 
org.apache.calcite.avatica.AvaticaResultSet.execute(AvaticaResultSet.java:193)  
      at 
org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:67)      
  at org.apache.calcite.jdbc.CalciteResultSet.execute(CalciteResultSet.java:44) 
       at 
org.apache.calcite.avatica.AvaticaConnection$1.execute(AvaticaConnection.java:607)
        at 
org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:599)
        at 
org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:615)
        at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:148)

   

Reply via email to