Não está totalmente honrando o valor de fs.default.name/fs.defaultFS no core-site.xml
Eu tenho o serviço NameNode instalado em uma máquina chamadahadoop
.
ocore-site.xml
arquivo tem ofs.defaultFS
(equivalente afs.default.name
) definido para o seguinte:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
Eu tenho uma tabela muito simples chamadatest_table
que atualmente existe no servidor Hive no HDFS. Isto é, é armazenado sob/user/hive/warehouse/test_table
. Foi criado usando um comando muito simples no Hive:
CREATE TABLE new_table (record_id INT);
Se eu tentar carregar dados na tabela localmente (ou seja, usandoLOAD DATA LOCAL
), tudo procede conforme o esperado. No entanto, se os dados são armazenados no HDFS e eu quero carregar a partir daí, ocorre um problema.
Eu corro uma consulta muito simples para tentar essa carga:
hive> LOAD DATA INPATH '/user/haduser/test_table.csv' INTO TABLE test_table;
Isso faz com que o seguinte erro:
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.
Como o erro indica, ele está tentando mudar dehdfs://hadoop:8020/user/haduser/test_table.csv
parahdfs://localhost:8020/user/hive/warehouse/test_table
. O primeiro caminho está correto porque ele faz referênciahadoop:8020
; o segundo caminho está incorreto, porque ele faz referêncialocalhost:8020
.
ocore-site.xml
arquivo claramente afirma usarhdfs://hadoop:8020
. ohive.metastore.warehouse
valor emhive-site.xml
aponta corretamente para/user/hive/warehouse
. Assim, duvido que esta mensagem de erro tenha algum valor verdadeiro.
Como posso fazer com que o servidor Hive use o endereço NameNode correto ao criar tabelas?