Ответ 1
Вы можете вставить новые данные в таблицу двумя способами.
Используя дистрибутив Cygwin, я установил Hadoop 0.20.3 и Hive 0.11.0.
Прежде всего, я не понимаю, как использовать CLI:
hive> show tables;
Затем введите и ничего не произойдет. Я могу выполнять запросы с помощью hive -e/-f.
Затем я создал таблицу:
CREATE TABLE tweet_table(
tweet STRING
)
COMMENT 'Table of string'
Но как я могу вставить данные в эту таблицу? Я вижу несколько примеров INSERT INTO
, но когда я пытаюсь:
INSERT INTO TABLE tweet_table (tweet) VALUES ("data")
У меня есть ошибка:
FAILED: ParseException line 1:30 cannot recognize input near '(' 'tweet' ')' in select clause
Как добавить данные в таблицу?
Вы можете вставить новые данные в таблицу двумя способами.
Если у вас уже есть таблица pre_loaded_tbl с некоторыми данными. Вы можете использовать трюк для загрузки данных в таблицу со следующим запросом
INSERT INTO TABLE tweet_table
SELECT "my_data" AS my_column
FROM pre_loaded_tbl
LIMIT 5;
Также обратите внимание, что "my_data" не зависит от каких-либо данных в pre_loaded_tbl. Вы можете выбрать любые данные и написать любое имя столбца (здесь my_data и my_column). Улей не требует наличия одинакового имени столбца. Однако структура оператора select должна быть такой же, как и для вашей tweet_table. Вы можете использовать лимит, чтобы определить, сколько раз вы можете вставлять в tweet_table.
Однако, если вы не создали какую-либо таблицу, вам придется загрузить данные с помощью файлов копирования или загрузки данных в приведенных выше ответах.
Попробуйте использовать это с одинарными кавычками в данных:
insert into table test_hive values ('1','puneet');
Если таблица без раздела, то код будет,
Вставить в таблицу table_name
выбрать col_a, col_b, col_c из другой_таблицы another_table(source table)
--here может быть применено любое условие, такое как ограничение, группировка, упорядочение и т.д.
Если таблица с разделами, то код будет,
set hive.exec.dynamic.partition = true;
set hive.exec.dynamic.partition.mode = nonstrict;
вставить в таблицу table_name
раздел (partition_col1
, paritition_col2
) выбрать col_a, col_b, col_c, partition_col1, partition_col2 из another_table(source table)
--here может быть применено любое условие, такое как ограничение, группировка, упорядочение и т.д.
У меня возникла аналогичная проблема, поэтому я использовал impala для вставки одной строки в таблицу, и она работала для одного и того же запроса. Это будет работать точно.
Хотя есть принятый ответ, я хотел бы добавить, что с Hive 0.14 разрешены операции на уровне записи. Правильный синтаксис и запрос будет:
INSERT INTO TABLE tweet_table VALUES ('data');