Подтвердить что ты не робот

Где Hive хранит файлы в HDFS?

Я хотел бы узнать, как найти сопоставление между таблицами Hive и фактическими файлами HDFS (точнее, каталогами), которые они представляют. Мне нужно напрямую обращаться к файлам таблиц.

Где Hive хранит свои файлы в HDFS?

4b9b3361

Ответ 1

Местоположение, которое они хранят на HDFS, довольно легко определить, как только вы знаете, где искать.:)

Если вы перейдете к http://NAMENODE_MACHINE_NAME:50070/ в своем браузере, он перенесет вас на страницу со ссылкой Browse the filesystem.

В каталоге $HIVE_HOME/conf есть hive-default.xml и/или hive-site.xml, у которого есть свойство hive.metastore.warehouse.dir. Это значение - это то, куда вы хотите перейти после нажатия ссылки Browse the filesystem.

В моем, это /usr/hive/warehouse. Когда я перейду к этому местоположению, я увижу имена моих таблиц. Нажав на имя таблицы (которая является только папкой), вы откроете разделы таблицы. В моем случае, в настоящее время я его разделяю только на date. Когда я нажимаю на папку на этом уровне, я увижу файлы (больше разделов будет иметь больше уровней). Эти файлы находятся там, где данные фактически хранятся на HDFS.

Я не пытался напрямую обращаться к этим файлам, я предполагаю, что это можно сделать. Я бы взял БОЛЬШУЮ заботу, если вы думаете об их редактировании.:) Для меня - я бы нашел способ сделать то, что мне нужно, без прямого доступа к данным Hive на диске. Если вам нужен доступ к необработанным данным, вы можете использовать запрос Hive и выводить результат в файл. Они будут иметь ту же структуру (разделитель между столбцами, ect) как файлы на HDFS. Я делаю такие запросы все время и конвертирую их в CSV.

Раздел о том, как записывать данные из запросов на диск, http://wiki.apache.org/hadoop/Hive/LanguageManual/DML#Writing_data_into_filesystem_from_queries

НТН

Ответ 2

Таблицы верстки могут не обязательно храниться на складе (поскольку вы можете создавать таблицы, расположенные где угодно на HDFS).

Вы должны использовать команду DESCRIBE FORMATTED <table_name>.

hive -S -e "describe formatted <table_name> ;" | grep 'Location' | awk '{ print $NF }'

Обратите внимание, что разделы могут храниться в разных местах и ​​для получения раздела alpha=foo/beta=bar вам нужно добавить partition(alpha='foo',beta='bar') после <table_name>.

Ответ 3

В терминале терминала Hive:

hive> set hive.metastore.warehouse.dir;

(он будет печатать путь)

Ответ 4

Также очень возможно, что набрав show create table <table_name> в hive cli, вы получите точное местоположение вашей таблицы hive.

Ответ 5

describe formatted <table_name>; внутри оболочки улья.

Обратите внимание на значение "Местоположение", которое показывает местоположение таблицы.

Ответ 6

Если вы посмотрите на файл hive-site.xml, вы увидите что-то вроде этого

<property>
   <name>hive.metastore.warehouse.dir</name>
   <value>/usr/hive/warehouse </value>
   <description>location of the warehouse directory</description>
 </property>

/usr/hive/storage - это местоположение по умолчанию для всех управляемых таблиц. Внешние таблицы могут храниться в другом месте.

describe formatted <table_name> - команда оболочки hive, которая может использоваться в более общем плане для поиска местоположения данных, относящихся к таблице hive.

Ответ 7

В Hive таблицы фактически хранятся в нескольких местах. В частности, если вы используете разделы (которые должны, если ваши таблицы очень большие или растут), то каждый раздел может иметь собственное хранилище.

Чтобы показать местоположение по умолчанию, в котором будут созданы данные таблицы или разделы, если вы создадите их с помощью команд по умолчанию по умолчанию: (insert overwrite ... partition ... и т.д.):

describe formatted dbname.tablename

Чтобы показать фактическое местоположение определенного раздела в таблице HIVE, сделайте следующее:

describe formatted dbname.tablename partition (name=value)

Если вы посмотрите в своей файловой системе, где таблица должна "жить", и вы не найдете там файлов, очень вероятно, что таблица создается (обычно поэтапно), создавая новый раздел и указывая на этот раздел в другом месте. Это отличный способ создания таблиц из таких вещей, как ежедневный импорт от третьих лиц и т.д., Что позволяет избежать копирования файлов или их хранения более одного раза в разных местах.

Ответ 8

Подведите итог нескольким пунктам, опубликованным ранее, в hive-site.xml, свойство hive.metastore.warehouse.dir указывает, где находятся файлы, расположенные под файлом HDFS

<property>
   <name>hive.metastore.warehouse.dir</name>
   <value>/user/hive/warehouse</value>
</property>

Для просмотра файлов используйте следующую команду:

hadoop fs -ls /user/hive/warehouse

или

http://localhost:50070
Utilities > Browse the file system
or
http://localhost:50070/explorer.html#/

проверено в соответствии с hadoop-2.7.3, hive-2.1.1