Вставить временную метку в Hive

Привет, я новичок в Hive и хочу вставить текущую метку времени в свою таблицу вместе со строкой данных.

Вот пример моей таблицы team:

team_id int
fname   string
lname   string
time    timestamp

Я рассмотрел несколько других примеров: Как вставить метку времени в таблицу Hive. ?, Как я могу добавить столбец отметки времени в кусте и, похоже, не может заставить его работать. Вот что я пытаюсь:

insert into team values('101','jim','joe',from_unixtime(unix_timestamp()));

Ошибка, которую я получаю:

FAILED: SemanticException [Error 10293]: Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values

Если бы кто-нибудь мог помочь, это было бы здорово, большое спасибо, Фрости.


person Frostie_the_snowman    schedule 16.06.2016    source источник
comment
вставка не поддерживает UDF даты, который вы еще использовали.   -  person K S Nidhin    schedule 16.06.2016
comment
Есть ли обходной путь, о котором вы знаете?   -  person Frostie_the_snowman    schedule 17.06.2016


Ответы (2)


Может быть достигнуто с помощью current_timestamp() , но только с помощью предложения select. даже не требуется предложение from в операторе select.

insert into team select '101','jim','joe',current_timestamp();

или если ваша версия улья не поддерживает оставление from в статусе выбора

insert into team select '101','jim','joe',current_timestamp() from team limit 1;
person sumitya    schedule 16.06.2016
comment
Я попробовал вышеописанное и получил следующую ошибку: ParseException line 1:65 Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement - person Frostie_the_snowman; 17.06.2016
comment
Добавлен еще один запрос для получения результата. - person sumitya; 17.06.2016
comment
Привет @syadav, это работает, но не отображается в таблице, но если я удалю limit 1, это сработает, но введет несколько. Любая причина, почему это происходит или как я могу это исправить? - person Frostie_the_snowman; 17.06.2016
comment
какая у тебя версия улья? Я тестировал это на Hive 1.2.1.2.3.4.29-1, там работает. - person sumitya; 17.06.2016
comment
используя Hive 1.2.1000.2.4.0.0-169 - person Frostie_the_snowman; 17.06.2016
comment
Через некоторое время отладки и тестирования я получил следующее, чтобы работать правильно: insert into team select '101','jim','joe',current_timestamp() from team limit 2; Не могли бы вы объяснить, как limit работает в этой команде? это то же самое, что и обычное ограничение на запрос выбора? - person Frostie_the_snowman; 20.06.2016
comment
да, это то же самое, что и обычный запрос к таблице с limit. Это почти эквивалентно select * from table, если вы не укажете limit, вы получите все записи из таблицы. если вам нужна только 1 запись, то требуется limit. - person sumitya; 20.06.2016
comment
Отлично, спасибо за вашу помощь - person Frostie_the_snowman; 21.06.2016
comment
Обратите внимание, что последний запрос не будет вставлять никаких значений, если таблица пуста, потому что from ${table} не будет соответствовать ни одной записи, и выбранные значения будут опущены. - person Paul Lam; 16.09.2020

Если у вас еще нет таблицы хотя бы с одной строкой, вы можете добиться желаемого результата как такового.

insert into team select '101','jim','joe',current_timestamp() from (select '123') x;
person Kevin    schedule 30.05.2017