Hi Zhu, Setting it to null shows "database null not found". My schema is missing jdbcCatalog entry. What value should I put there? I could not find anything in hive doc: https://cwiki.apache.org/confluence/display/Hive/HiveClient
After playing with it more I've realized that it is able to connect to Hive, but not query it (sorry for bad title). When I run the select * from "thrift"."test" query it shows the below error. I put quotes because Calcite is case sensitive. The error does not mean that table "test" not found in Hive DB, but that the schema doesn't have the "test" element inside the "thrift" schema. I think it fails to recognize that what I mean is that I want to use "thrift" schema to connect to the database "default" and its table "test". For some reason it thinks that "test" is part of the schema, not table in the DB. 07:59:31.399 [main] DEBUG com.huawei.cloudsop.us.queryengine.Controller.QueryController - query: select * from "thrift"."test" 07:59:32.479 [main] INFO org.apache.hive.jdbc.Utils - Supplied authorities: 127.0.0.1:10000 07:59:32.480 [main] INFO org.apache.hive.jdbc.Utils - Resolved authority: 127.0.0.1:10000 07:59:32.523 [main] DEBUG org.apache.thrift.transport.TSaslTransport - opening transport org.apache.thrift.transport.TSaslClientTransport@19542407 07:59:32.524 [main] DEBUG org.apache.thrift.transport.TSaslClientTransport - Sending mechanism name PLAIN and initial response of length 20 07:59:32.526 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Writing message with status START and payload length 5 07:59:32.526 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Writing message with status COMPLETE and payload length 20 07:59:32.526 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Start message handled 07:59:32.526 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Main negotiation loop complete 07:59:32.526 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: SASL Client receiving last message 07:59:32.526 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Received message with status COMPLETE and payload length 0 07:59:32.538 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 71 07:59:32.575 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 109 07:59:32.710 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 85 07:59:32.714 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 55 07:59:32.723 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 83 07:59:32.724 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 40 07:59:32.733 [main] INFO org.apache.hive.jdbc.Utils - Supplied authorities: 127.0.0.1:10000 07:59:32.733 [main] INFO org.apache.hive.jdbc.Utils - Resolved authority: 127.0.0.1:10000 07:59:32.734 [main] DEBUG org.apache.thrift.transport.TSaslTransport - opening transport org.apache.thrift.transport.TSaslClientTransport@49798e84 07:59:32.734 [main] DEBUG org.apache.thrift.transport.TSaslClientTransport - Sending mechanism name PLAIN and initial response of length 20 07:59:32.734 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Writing message with status START and payload length 5 07:59:32.734 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Writing message with status COMPLETE and payload length 20 07:59:32.735 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Start message handled 07:59:32.735 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Main negotiation loop complete 07:59:32.735 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: SASL Client receiving last message 07:59:32.736 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: Received message with status COMPLETE and payload length 0 07:59:32.736 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 71 07:59:32.776 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 109 07:59:32.776 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 85 07:59:32.777 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 55 07:59:32.779 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 85 07:59:32.780 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 55 07:59:32.780 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 85 07:59:32.781 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 51 07:59:32.781 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 85 07:59:32.781 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 55 07:59:33.119 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 85 07:59:33.123 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 55 07:59:33.127 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 88 07:59:33.137 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 102 07:59:33.153 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 102 07:59:33.155 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 464 07:59:33.178 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 112 07:59:33.181 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 180 07:59:33.204 [main] DEBUG org.apache.thrift.transport.TSaslTransport - writing data length: 96 07:59:33.207 [main] DEBUG org.apache.thrift.transport.TSaslTransport - CLIENT: reading data length: 42 java.sql.SQLException: Error while executing SQL "select * from "thrift"."test"": From line 1, column 15 to line 1, column 29: Object 'test' not found within 'thrift' 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:163) at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227) at com.huawei.cloudsop.us.queryengine.Manager.CalciteQueryManager.query(CalciteQueryManager.java:41) at com.huawei.cloudsop.us.queryengine.Controller.QueryController.query(QueryController.java:27) at com.huawei.cloudsop.us.queryengine.SchemaTest.testThriftScheme(SchemaTest.java:41) 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:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.junit.runner.JUnitCore.run(JUnitCore.java:160) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: org.apache.calcite.runtime.CalciteContextException: From line 1, column 15 to line 1, column 29: Object 'test' not found within 'thrift' at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:787) at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:772) at org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4825) at org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:166) at org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:177) at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:994) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:954) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3087) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3069) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3339) at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60) at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:994) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:954) at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:216) at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:929) at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:633) at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:558) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:265) at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:231) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:767) at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:631) at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:601) at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:229) at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:550) at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675) at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156) ... 26 more Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Object 'test' not found within 'thrift' at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572) ... 54 more Thanks, Val On Tue, Jun 18, 2019 at 7:39 PM Zhu Feng <[email protected]> wrote: > Hi Valeriy, > I remember that "jdbcCatalog" and "jdbcSchema" should be carefully > configured for Hive Jdbc. > Maybe you can try "null" or db name. > > best, > DonnyZone > > Valeriy Trofimov <[email protected]> 于2019年6月19日周三 上午8:11写道: > > > Hi All, > > > > I'm trying to connect to Hive DB via Thrift JDBC Server. > > > > I get error: "Object 'test' not found within 'thrift'". > > > > The error occurs by the IdentifierNamespace.resolveImpl() method. The > > method checks that schema looks correct based on my query. > > > > Schema: > > > > { > > version: '1.0', > > schemas: [ > > { > > name: 'thrift', > > type: 'custom', > > factory: 'org.apache.calcite.adapter.jdbc.JdbcSchema$Factory', > > operand: { > > jdbcDriver: 'org.apache.hive.jdbc.HiveDriver', > > jdbcUrl: 'jdbc:hive2://127.0.0.1:10000/default', // please use > > VirtualBox port forwarding to the VM with Thrift server running > > jdbcUser: '', > > jdbcPassword: '' > > } > > } > > ] > > } > > > > Test query: > > > > String query = "select * from \"thrift\".\"test\""; > > > > I've double checked that you can connect to Thrift Server and that there > is > > a database called "default" and table called "test". > > > > It looks like the error is caused by Calcite trying to find entries for > > "tables" in the schema. But I am confused why it would look for it. JDBC > > schema doesnt require these entries and adding them actually shows error > > about "tables" not needing to be there. > > > > Repro steps for this issue are too long, but I can provide if someone is > > interested in digging deeper into this. > > > > Thanks, > > Val > > >
