У меня очень простая таблица в улье, транзакционная, хранящаяся как ORC, 10 столбцов (включая 2 отметки времени), 40 строк.
Если я select *
из этой таблицы (через билайн), я получаю такую ошибку:
java.sql.SQLException: Unrecognized column type:TIMESTAMP_TYPE at org.apache.hive.jdbc.HiveBaseResultSet.getColumnValue(HiveBaseResultSet.java:428) at org.apache.hive.jdbc.HiveBaseResultSet.getObject(HiveBaseResultSet.java:463)
Если я выберу только столбцы, которые не являются метками времени, я получу ожидаемый результат. Если я выберу любой столбец с меткой времени, я получу исключение.
Если бы я select * order by any column
, то тоже получил ожидаемый результат.
Я не понимаю, что здесь происходит, и не могу найти никакой документации в Интернете. Есть идеи, в чем может быть проблема?
Контекст: улей 2.1, hdp 2.6
@VamsiPrabhala да, та же ошибка.
какой формат метки времени?
Не уверен, что вы имеете в виду. Данные уже есть в таблице, так как insert
прошел нормально. Насколько мне известно, тип временной метки - это временная метка. При просмотре данных получается, например, 2018-01-16 08:06:25.722
.
Это означает, что ваш тип данных в файле отличается от типа данных столбца в таблице в кусте. Скорее всего, у вас есть строка в файле и отметка времени в таблице.
Я бы согласился с этим, если бы никогда не видел данных. Но когда у меня order by
, то исключения не бывает. Именно эта непоследовательность беспокоит меня больше всего.
Если вы можете добавить схему таблицы и оператор вставки для одной строки данных, это может быть полезно.
Минималистичная схема - это (name string, created_on timestamp) stored as orc bucketed by name into 1 bucket TBLPROPERTIES ('transactional'='true')
(синтаксис не гарантируется, на мой взгляд). Вставка представляет собой комплекс merge
на основе таблицы avro.
Avro не может иметь значение отметки времени, поэтому, вероятно, это строка в файле и отметка времени в таблице. попробуйте сделать select cast (created_on as timestamp) из таблицы, это должно сработать ...
Приведение выполняется во время слияния, и мой вопрос все еще остается в силе: почему я не получаю исключение, если сортирую данные? Я был бы удивлен, если бы сортировка добавила неявное приведение.
Можете ли вы выполнить тот же запрос из пользовательского интерфейса, такого как Ambari, и проверить, появляется ли у вас такая же ошибка?