Как сохранить row_timestamp Феникс Hbase
Я использую HBase 1.1, Phoenix 4.7. Перейдя по этой ссылке о метке времени строки (отображение родной метки времени строки HBase в столбец Phoenix): https://phoenix.apache.org/rowtimestamp.html
Я создал образец таблицы
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
Но похоже, что Феникс автоматически не обрабатывает 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
Кто-нибудь дает мне пример о синтаксисе UPSERT row_stamp Apache Phoenix?
Заранее спасибо.
1 ответ
Пробовал те же операторы создания / вставки в моей среде. Прежде всего, оператор create создает проблему со следующей ошибкой для столбца METRIC_VALUE.
Ошибка: ОШИБКА 201 (22000): недопустимые данные. Неподдерживаемый тип SQL: LONG (состояние =22000, код =201)
Я изменил тип на удвоение и CREATE TABLE, и UPSERT также работал. Проблема в следующей строке, которая устанавливает строку для столбца числового типа.
ps.setString(2, "123123");