Hi, Rakesh I find that it says Protobuf doesn't provide source/binary compatibility across different versions after searching the error message using google[1].
Maybe you can try to compile source code of Calcite which uses the same version of Protobuf in Phoenix. But I am not sure that it can work. [1] https://groups.google.com/forum/#!topic/protobuf/N8rznIMcwWg Bests, Chunwei Rakesh Nair <[email protected]> 于2019年4月17日周三 下午3:03写道: > > Hi, > Could someone kindly help me with the problem I'm facing in my previous > email? I've been sitting on this for some time now and would really like to > solve it. > For what it's worth, these are the dependencies I'm using, > *<dependencies>* > * <!-- https://mvnrepository.com/artifact/org.apache.calcite/calcite-core > <https://mvnrepository.com/artifact/org.apache.calcite/calcite-core> -->* > * <dependency>* > * <groupId>org.apache.calcite</groupId>* > * <artifactId>calcite-core</artifactId>* > * <version>1.19.0</version>* > * </dependency>* > * <!-- https://mvnrepository.com/artifact/org.apache.phoenix/phoenix-core > <https://mvnrepository.com/artifact/org.apache.phoenix/phoenix-core> -->* > * <dependency>* > * <groupId>org.apache.phoenix</groupId>* > * <artifactId>phoenix-core</artifactId>* > * <version>5.0.0.3.0.1.0-187</version>* > * </dependency>* > * </dependencies>* > * <repositories>* > * <repository>* > * <id>Hortonworks Repository</id>* > * <url>http://repo.hortonworks.com/content/repositories/releases/ > <http://repo.hortonworks.com/content/repositories/releases/></url>* > * </repository>* > * </repositories>* > > Waiting for you response. > Regards, > Rakesh. > > On Tue, Apr 16, 2019 at 7:03 PM Rakesh Nair <[email protected]> > wrote: > > > Hi, > > So I've trying to connect Calcite with Apache Phoenix. Code given below: > > > > *public Frameworks.ConfigBuilder configPhoenix() {* > > * SchemaPlus rootSchema = Frameworks.createRootSchema(true);* > > > > * DataSource dataSource = > > JdbcSchema.dataSource("jdbc:phoenix:<ip>:<port>:/hbase-unsecure", > > "org.apache.phoenix.jdbc.PhoenixDriver", null, null);* > > * JdbcSchema schema = JdbcSchema.create(rootSchema, "hbase-unsecure", > > dataSource, null, "hbase-unsecure");* > > * for (String table : schema.getTableNames()) {* > > * logger.info <http://logger.info>(table);* > > * rootSchema.add(table, schema.getTable(table));* > > * }* > > * return Frameworks.newConfigBuilder().defaultSchema(rootSchema);* > > * }* > > *public static void main(String[] args) throws Exception {* > > *FrameworkConfig config = configPhoenix().build();RelBuilder builder = > > RelBuilder.create(config);* > > *}* > > > > Unfortunately I'm getting following error: > > > > *Exception in thread "main" java.lang.RuntimeException: > > java.sql.SQLException: Cannot create PoolableConnectionFactory > > (java.lang.VerifyError: class com.google.protobuf.LiteralByteString > > overrides final method toString.(Ljava/lang/String;)Ljava/lang/String;)* > > * at > > org.apache.calcite.adapter.jdbc.JdbcUtils$DialectPool.get(JdbcUtils.java:97)* > > * at > > org.apache.calcite.adapter.jdbc.JdbcSchema.createDialect(JdbcSchema.java:184)* > > * at > > org.apache.calcite.adapter.jdbc.JdbcSchema.create(JdbcSchema.java:120)* > > * at > > org.apache.calcite.adapter.jdbc.JdbcSchema.create(JdbcSchema.java:107)* > > > > I presume this is happening because Protobuf 3+ jar is present in > > classpath for use by Calcite while Phoenix actually requires Protobuf 2.5.0. > > > > So could someone tell me whether I'm doing something wrong here or if not, > > then , how to handle this? > > > > Regards, > > Rakesh > >
