Nie uhonoruj w pełni wartości fs.default.name/fs.defaultFS w core-site.xml
Mam zainstalowaną usługę NameNode na komputerze o nazwiehadoop
.
Thecore-site.xml
plik mafs.defaultFS
(równoważnyfs.default.name
) ustaw na następujące:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
Mam bardzo prostą tabelę o nazwietest_table
który istnieje obecnie na serwerze Hive na HDFS. Oznacza to, że jest przechowywany pod/user/hive/warehouse/test_table
. Został utworzony za pomocą bardzo prostego polecenia w Hive:
CREATE TABLE new_table (record_id INT);
Jeśli spróbuję załadować dane do tabeli lokalnie (to znaczy używającLOAD DATA LOCAL
), wszystko przebiega zgodnie z oczekiwaniami. Jeśli jednak dane są przechowywane w systemie plików HDFS i chcę je stamtąd załadować, pojawia się problem.
Wykonuję bardzo proste zapytanie, aby spróbować tego obciążenia:
hive> LOAD DATA INPATH '/user/haduser/test_table.csv' INTO TABLE test_table;
Prowadzi to do następującego błędu:
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.
Jak stwierdza błąd, próbuje się przenieśćhdfs://hadoop:8020/user/haduser/test_table.csv
dohdfs://localhost:8020/user/hive/warehouse/test_table
. Pierwsza ścieżka jest poprawna, ponieważ się odwołujehadoop:8020
; druga ścieżka jest niepoprawna, ponieważ odwołuje sięlocalhost:8020
.
Thecore-site.xml
plik wyraźnie wskazuje na użyciehdfs://hadoop:8020
. Thehive.metastore.warehouse
wartość whive-site.xml
poprawnie wskazuje na/user/hive/warehouse
. Dlatego wątpię, aby ten komunikat o błędzie miał jakąś prawdziwą wartość.
Jak mogę uzyskać, aby serwer Hive używał prawidłowego adresu NameNode podczas tworzenia tabel?