phoenix upsert仅写入主键-不写入任何可选列

时间:2018-06-20 21:14:02

标签: apache hbase upsert phoenix

 DataManager dm = new DataManager();
    dm.getConnection();

    String colTypesString = "(exec_id varchar not null, bucket_name varchar, state varchar CONSTRAINT pk PRIMARY KEY (exec_id))";
    String createTableStatement = "CREATE TABLE IF NOT EXISTS " + "test" + "." + "schema_metadata" + colTypesString;
    dm.statement.executeUpdate(createTableStatement);
    String v = "UPSERT into test.schema_metadata(EXEC_ID, BUCKET_NAME, STATE)  VALUES ('123','free','active')";
    dm.statement.executeUpdate(v);
    dm.connection.commit();

select * from TEST.SCHEMA_METADATA shows it did not write the optional rows

这是我pom文件中的phoenix依赖项:

  <dependency>
     <groupId>org.apache.phoenix</groupId>
     <artifactId>phoenix-core</artifactId>
     <version>4.14.0-HBase-1.4</version>
  </dependency>

注意:如果我从UI(Squirrel)执行UPSERT,它将正常工作-写入所有数据。

1 个答案:

答案 0 :(得分:0)

已修复:将我在Java和squirrel中的驱动程序与我们的hbase-phoenix服务器中的新驱动程序对齐之后,一切都可以正常工作。

以下程序包可以在jar和docker容器中运行,但是对于所有的phoenix jars来说都很沉重(我相信)。使用phoenix-client并没有所有必需的类。

<dependency>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix-core</artifactId>
    <version>4.14.0-cdh5.14.2</version>
 </dependency>