sparksql整合hive创建外部表报错(求大佬解答)

sparksql整合hive创建外部表的时候报错
建表语句如下:

create external table if not exists bdm.itcast_bdm_order_goods(
user_id string,--用户ID
order_id string,--订单ID
order_no string,--订单号
sku_id bigint,--SKU编号
sku_name string,--SKU名称
goods_id bigint,--商品编号

) partitioned by (dt string)
row format delimited fields terminated by ','
lines terminated by '\n'
location '/business/itcast_bdm_order_goods';

报如下错误:

**Moved: 'hdfs://hann/business/itcast_bdm_order_goods' to trash at: hdfs://hann/user/root/.Trash/Current
Error in query: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:java.lang.IllegalArgumentException: java.net.UnknownHostExc**eption: nhann);

启动spark-sql的语句如下:

spark-sql --master spark://node01:7077 --driver-class-path /export/servers/hive-1.1.0-cdh5.14.0/lib/mysql-connector-java-5.1.38.jar --conf spark.sql.warehouse.dir=hdfs://hann/user/hive/warehouse

hive-site.xml配置文件如下:

<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://node03.hadoop.com:3306/hive?createDatabaseIfNotExist=true</value>
        </property>

        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.jdbc.Driver</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>123456</value>
        </property>
      <!-- <property>
                <name>hive.cli.print.current.db</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.cli.print.header</name>
                <value>true</value>
        </property>
        <property>
                <name>hive.server2.thrift.bind.host</name>
                <value>node03.hadoop.com</value>
        </property>
         <property>
                <name>hive.metastore.uris</name>
                <value>thrift://node03.hadoop.com:9083</value>
        </property>
        <property>
                <name>hive.metastore.client.socket.timeout</name>
                <value>3600</value>
        </property>-->

</configuration>

根据报错信息可以看出创建外部表时location指定的路径无法访问,造成这个错误的原因可能是Hadoop集群中的namenode无法解析主机名“nhann”,建议您检查下几个地方:

  1. 检查Hadoop集群中的/etc/hosts文件中是否有“nhann”这个主机名的映射,如果没有可以添加上。

  2. 如果您使用的是DNS服务,请检查DNS配置是否正确。

  3. 如果您使用的是代理服务器,请检查代理服务器的配置是否正确。

同时,建议您在创建表时使用完整的HDFS路径代替hostname来避免这种问题。