1. 程式人生 > >hive在執行查詢sql時出現java.lang.IllegalArgumentException: Wrong FS: hdfs://node1:9000/user/hive/warehouse/.

hive在執行查詢sql時出現java.lang.IllegalArgumentException: Wrong FS: hdfs://node1:9000/user/hive/warehouse/.

hive在執行查詢sql時出現java.lang.IllegalArgumentException: Wrong FS: hdfs://node1:9000/user/hive/warehouse/test1.db/t1, expected: hdfs://cluster1

原因是hadoop由普通叢集修改成了高可用集群后沒有更改hive設定中warehouse在hdfs上的儲存路徑 修改hive-site.xml檔案內hive.metastore.warehouse.dir的值將之前的hdfs://node1:9000/user/hive/warehouse修改為hdfs://cluster1/user/hive/warehouse

(這裡的hdfs://cluster1是Hadoop配置檔案core-site.xml中的fs.defaultFS指定的值)

<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>hdfs://cluster1/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>

修改完成後重啟hive服務測試:

[[email protected] hive]# bin/hive

新增新資料庫

hive> create database hadoopha_test.db;

建立成功後通過sqlyog連線到資料庫檢視hive庫下的DBS表中的資料發現 hdfs://cluster1/user/hive/warehouse/hadoopha_test.db

經測試在此庫下建立表可以正常查詢資料了

如果sparksql整合了hive,在啟動sparksql是也要修改指定spark.sql.warehouse.dir的路徑為hdfs://cluster1/user/hive/warehouse

bin/spark-sql --master spark://node1:7077 \
--executor-memory 1g \
--total-executor-cores 2 \
--conf spark.sql.warehouse.dir=hdfs://cluster1/user/hive/warehouse