phoenix upsert只写主键,不写任何可选列

cyvaqqii  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(461)
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\元数据显示它没有写入可选行
以下是pom文件中的phoenix依赖项:

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

注意:如果我从ui(squirrel)执行upsert,它工作正常-所有数据都被写入。

ppcbkaq5

ppcbkaq51#

修正:当我将java和squirrel中的驱动程序与hbase-phoenix服务器中的新驱动程序对齐后,一切都正常了。
下面的包适用于在jar和docker容器中运行,但是它对于所有的phoenix jar来说都非常重(我相信)。使用phoenix客户端没有所有必需的类。

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

相关问题