Hive не полностью соблюдает значение fs.default.name/fs.defaultFS в core-site.xml
У меня установлена служба NameNode на компьютере с именемhadoop
.
core-site.xml
файл имеетfs.defaultFS
(эквивалентноfs.default.name
) установите следующее:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
У меня есть очень простая таблица под названиемtest_table
который в настоящее время существует на сервере Hive в HDFS. То есть он хранится под/user/hive/warehouse/test_table
, Он был создан с помощью очень простой команды в Hive:
CREATE TABLE new_table (record_id INT);
Если я пытаюсь загрузить данные в таблицу локально (то есть используяLOAD DATA LOCAL
) все идет как положено. Однако, если данные хранятся в HDFS, и я хочу загрузить их оттуда, возникает проблема.
Я запускаю очень простой запрос для попытки загрузки:
hive> LOAD DATA INPATH '/user/haduser/test_table.csv' INTO TABLE test_table;
Это приводит к следующей ошибке:
FAILED: SemanticException [Error 10028]: Line 1:17 Path is not legal ''/user/haduser/test_table.csv'':
Move from: hdfs://hadoop:8020/user/haduser/test_table.csv to: hdfs://localhost:8020/user/hive/warehouse/test_table is not valid.
Please check that values for params "default.fs.name" and "hive.metastore.warehouse.dir" do not conflict.
Как говорится в сообщении об ошибке, он пытается перейти отhdfs://hadoop:8020/user/haduser/test_table.csv
вhdfs://localhost:8020/user/hive/warehouse/test_table
, Первый путь правильный, потому что он ссылаетсяhadoop:8020
; второй путь неверен, потому что он ссылаетсяlocalhost:8020
.
core-site.xml
файл четко указывает на использованиеhdfs://hadoop:8020
,hive.metastore.warehouse
значение вhive-site.xml
правильно указывает на/user/hive/warehouse
, Таким образом, я сомневаюсь, что это сообщение об ошибке имеет какое-либо истинное значение.
Как я могу заставить сервер Hive использовать правильный адрес NameNode при создании таблиц?