hadoop hive 创建表的坑

栏目: 编程工具 · 发布时间: 5年前

内容简介:同事说spark-sql插入不了数据,读取数据可以。写会报以下错误2019-02-20 19:12:40 INFO audit:371 - ugi=root ip=unknown-ip-addr cmd=get_table : db=dataall tbl=track_pcError in query: java.lang.IllegalArgumentException: Wrong FS: hdfs://aaaaa:9000/user/hive/warehouse/dataall.db/track_pc

同事说spark-sql插入不了数据,读取数据可以。写会报以下错误

2019-02-20 19:12:40 INFO audit:371 - ugi=root ip=unknown-ip-addr cmd=get_table : db=dataall tbl=track_pc

Error in query: java.lang.IllegalArgumentException: Wrong FS: hdfs://aaaaa:9000/user/hive/warehouse/dataall.db/track_pc/.hive-staging_hive_2019-02-20_19-12-39_656_7771985312772642109-1/-ext-10000/part-00000-53761c78-6e3b-47e0-b203-57fba5f90856-c000, expected: hdfs://bbbbb;

hive读取数据,插入数据都可以。

一,问题分析

错误提示也很清楚了,hdfs地址不对。期望的是hdfs://bbbbb,而实际的是hdfs://aaaaa:9000

1,hdfs的配置检查,做了ha后,也不会在使用带端口的hdfs,应当不是这块问题

2,检查spark的配置文件,使用hdfs的地方,也使用了ha,应当不是这块问题

3,无意间看了看元数据,发现数据库里面竟然有hdfs://aaaaa:9000, 这些属于配置,放到数据库里面无语哦。配置的改动,数据库并不会根着变动。

二,解决办法有二

1,使用metatool,这是hive自带工具(官方推荐,本人没有实验成功)

# metatool -updateLocation hdfs://aaaaa:9000/ hdfs://bbbbb/  //更换
# metatool -listFSRoot  //查看

如果通过更新操作,出现以下内容,说明更新成功,不然不成功。

# metatool -listFSRoot
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/bigdata/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/bigdata/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Initializing HiveMetaTool..
Listing FS Roots..
hdfs://bbbbb/user/hive/warehouse
hdfs://bbbbb/user/hive/warehouse/dataall.db

我用的是hive2.3.4 bin版的,安装方法参考: hive mysql 安装配置

2,直接修改元数据库

要改DBS和SDS二张表,

hadoop hive 创建表的坑

元数据库表dbs修改

hadoop hive 创建表的坑

元数据库sds修改

三,意外收获

namenode做ha,请参考: zookeeper hadoop 集群 安装配置 ,如果active的namenode发生宕机时,调度的任务会切换到ha的其他节点。整个yarn的调度任务,以及hdfs的存储任务是不会受影响的。

但是只要hdfs://aaaaa:9000,这台机器由active转变成standby后,hive和spark根本连不上去,直接报,READ is not supported in state standby

这个问题,在元数据库改过以后,就在也没发生过

其实还有一种解决办法就是,让hdfs://aaaaa:9000,一直active,如果这样,HA就失去它的价值了。


以上所述就是小编给大家介绍的《hadoop hive 创建表的坑》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程匠艺

编程匠艺

(美)古德利弗(Goodliffe, P.)著 / 韩江,陈玉译 / 电子工业出版社 / 2008-9 / 79.00元

如果你可以编写出合格的代码,但是想更进一步、创作出组织良好而且易于理解的代码,并希望成为一名真正的编程专家或提高现有的职业技能,那么《编程匠艺——编写卓越的代码》都会为你给出答案。本书的内容遍及编程的各个要素,如代码风格、变量命名、错误处理和安全性等。此外,本书还对一些更广泛的编程问题进行了探讨,如有效的团队合作、开发过程和文档编写,等等。本书各章的末尾均提供一些思考问题,这些问题回顾了各章中的一......一起来看看 《编程匠艺》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具