2015-07-14 2 views
2

Мне нужно создать несколько таблиц в Hive, и для этого я хочу вставить данные в hdfs, чтобы таблица кустов была создана автоматически.Вставить данные в HDFS

Я считаю этот пример: hive table

Мне нужна эта информация, хранящуюся в улье. Не могли бы вы рассказать мне пример того, как я вставляю данные в HDFS для этого?

ответ

1

Таблицы улья не создаются атомарно, когда вы загружаете данные в HDFS. Это то, что вам нужно сделать вручную или программно из вашего приложения. Команда для создания (внешние) Hive таблицы в основном:

hive> create external table <table_name> (param_1_name param_1_type, ...) row format delimited fields terminated by ',' location '/user/<your_hdfs_user>/path/to/the/data/directory/'; 

выше для структурированных данных в CSV-формате, например. Если данные записаны в JSON, вам нужно будет использовать serde.

Говорят, что после создания таблиц Hive очень простой способ добавить новые данные в таблицы - это загрузить такие данные в HDFS напрямую. Это можно сделать через WebHDFS. Например, если вы хотите добавить файл в HDFS папку таблицы Hive указывает на (с использованием curl в Http Cient):

$ curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATE 
       [&overwrite=<true |false>][&blocksize=<LONG>][&replication=<SHORT>] 
       [&permission=<OCTAL>][&buffersize=<INT>]" 

Вы получите Перенаправление, что необходимо соблюдать:

HTTP/1.1 307 TEMPORARY_REDIRECT 
Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE... 
Content-Length: 0 

Таким образом, выполнить PUT на перенаправление URL:

curl -i -X PUT -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE..." 

(BTW, curl может автоматически следовать переназначения, если вы используете опцию -L).

После создания файла вы можете добавить новые данные в уже существующий файл, используя метод POST (op=append, как указано в документации).

HTH

+0

привет спасибо за ваш ответ! но как насчет вставки данных с помощью Hive? каждая вставка перепишет всю таблицу? или просто добавить новую строку в конце файла? заранее спасибо –

+0

AFAIK, Hive готов к вставкам из версии 0.14.0. До этого мое впечатление было сосредоточено на Hive на использовании данных, которые были обновлены путем добавления к базовым файлам HDFS. Кроме того, таблицы могут быть созданы из результатов запроса. Проверьте: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-InsertingvaluesintotablesfromSQL – frb

Смежные вопросы