Как хранить несколько файлов в одном каталоге в кусте? - PullRequest
1 голос
/ 02 июля 2019

Я использую Hive для обработки моих CSV-файлов.Я сохранил файлы CSV в HDFS и хочу создать таблицы из этих файлов.

Я использую следующую команду:

create external table if not exists csv_table (dummy STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:9000/user/hive'
TBLPROPERTIES ("skip.header.line.count"="1");

LOAD DATA INPATH '/CsvData/csv_table.csv' OVERWRITE INTO TABLE csv_table;

Поэтому файл в /CsvData будет перемещен в /user/hive.Это имеет смысл.

Но как, если я захочу создать другую таблицу?

create external table if not exists csv_table2 (dummy STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:9000/user/hive'
TBLPROPERTIES ("skip.header.line.count"="1");

LOAD DATA INPATH '/CsvData/csv_table2.csv' OVERWRITE INTO TABLE csv_table2;

Возникнет исключение с жалобой на то, что каталог не пустой.

ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Directory hdfs://localhost:9000/user/hive could not be cleaned up.

Так что мне трудно понять, значит ли это, что я могу хранить только один файл, понять одну директорию?Для хранения нескольких файлов мне нужно создать один каталог для каждого файла?

Можно ли хранить все файлы вместе?

1 Ответ

1 голос
/ 02 июля 2019

Создание предложения таблицы НЕ вызовет исключение, в котором говорится, что каталог не пустой, потому что это обычный сценарий, когда вы создаете таблицу поверх существующего каталога.

Вы можете хранить столько файлов в каталоге, сколько необходимо. И все они будут доступны для таблицы, построенной поверх папки.

Расположение таблицы - это каталог, а не файл. Если вам нужно создать новую таблицу и сохранить ее файлы не смешанными с другой таблицей, то создайте отдельную папку.

Прочитайте также этот ответ для ясного понимания: https://stackoverflow.com/a/54038932/2700344

...