我在名爲hadoop
的計算機上安裝了NameNode服務。配置單元不完全遵守core-site.xml中的fs.default.name/fs.defaultFS值
的core-site.xml
文件具有fs.defaultFS
(相當於fs.default.name
)設置爲以下:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
我有一個非常簡單的表稱爲當前存在於對HDFS蜂房服務器test_table
。也就是說,它存儲在/user/hive/warehouse/test_table
之下。它是在蜂巢用一個非常簡單的命令創建:
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-site.xml
中的hive.metastore.warehouse
值正確指向/user/hive/warehouse
。因此,我懷疑這個錯誤信息是否有真正的價值。
如何在創建表時使Hive服務器使用正確的NameNode地址?