如何更新 row_timestamp Phoenix Hbase
How to upsert row_timestamp Phoenix Hbase
我正在使用 HBase 1.1、Phoenix 4.7
按照这个 link 关于行时间戳(将 HBase 的本机行时间戳映射到 Phoenix 列):
https://phoenix.apache.org/rowtimestamp.html
我创建了一个样本table
CREATE TABLE DESTINATION_METRICS_TABLE
(CREATED_DATE DATE NOT NULL,
METRIC_ID CHAR(15) NOT NULL,
METRIC_VALUE LONG
CONSTRAINT PK PRIMARY KEY(CREATED_DATE ROW_TIMESTAMP, METRIC_ID))
SALT_BUCKETS = 8;
并插入一行
UPSERT INTO DESTINATION_METRICS_TABLE (METRIC_ID, METRIC_VALUE) VALUES (?, ?) - this sets the value of CREATED_DATE to the server side time
但 Phoenix 似乎不会自动处理 row_timestamp CREATED_DATE。
我的 Java 代码不起作用:
String sql = "UPSERT INTO DESTINATION_METRICS_TABLE (METRIC_ID, METRIC_VALUE) VALUES (?, ?)";
ps = connection.prepareStatement(sql);
connection.setAutoCommit(false);
ps.setString(1, "asdasd");
ps.setString(2, "123123");
ps.executeUpdate()
我收到错误:
org.apache.phoenix.schema.TypeMismatchException: ERROR 203 (22005): Type mismatch. VARCHAR cannot be coerced to BIGINT
有没有人给我一个关于 row_stamp Apache Phoenix 的语法 UPSERT 的例子?
提前致谢。
在我的环境中尝试了相同的 create/upsert 语句。首先,create 语句给出了 METRIC_VALUE 列的以下错误问题。
Error: ERROR 201 (22000): Illegal data. Unsupported sql type: LONG
(state=22000,code=201)
我将类型更改为 double 并创建 TABLE 并且 UPSERT 也起作用了。问题出在为数字类型的列设置字符串的下一行中。
ps.setString(2, "123123");
我正在使用 HBase 1.1、Phoenix 4.7 按照这个 link 关于行时间戳(将 HBase 的本机行时间戳映射到 Phoenix 列): https://phoenix.apache.org/rowtimestamp.html
我创建了一个样本table
CREATE TABLE DESTINATION_METRICS_TABLE
(CREATED_DATE DATE NOT NULL,
METRIC_ID CHAR(15) NOT NULL,
METRIC_VALUE LONG
CONSTRAINT PK PRIMARY KEY(CREATED_DATE ROW_TIMESTAMP, METRIC_ID))
SALT_BUCKETS = 8;
并插入一行
UPSERT INTO DESTINATION_METRICS_TABLE (METRIC_ID, METRIC_VALUE) VALUES (?, ?) - this sets the value of CREATED_DATE to the server side time
但 Phoenix 似乎不会自动处理 row_timestamp CREATED_DATE。
我的 Java 代码不起作用:
String sql = "UPSERT INTO DESTINATION_METRICS_TABLE (METRIC_ID, METRIC_VALUE) VALUES (?, ?)";
ps = connection.prepareStatement(sql);
connection.setAutoCommit(false);
ps.setString(1, "asdasd");
ps.setString(2, "123123");
ps.executeUpdate()
我收到错误:
org.apache.phoenix.schema.TypeMismatchException: ERROR 203 (22005): Type mismatch. VARCHAR cannot be coerced to BIGINT
有没有人给我一个关于 row_stamp Apache Phoenix 的语法 UPSERT 的例子?
提前致谢。
在我的环境中尝试了相同的 create/upsert 语句。首先,create 语句给出了 METRIC_VALUE 列的以下错误问题。
Error: ERROR 201 (22000): Illegal data. Unsupported sql type: LONG (state=22000,code=201)
我将类型更改为 double 并创建 TABLE 并且 UPSERT 也起作用了。问题出在为数字类型的列设置字符串的下一行中。
ps.setString(2, "123123");