Hive创建表格报【Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException】引发的血案

在成功启动Hive之后感慨这次终于没有出现Bug了,满怀信心地打了长长的创建表格的命令,结果现实再一次给了我一棒,报了以下的错误Error, return code 1 from org.apache.Hadoop.hive.ql.exec.DDLTask. MetaException,看了一下错误之后,先是楞了一下,接着我就发出感慨,自从踏上编程这条不归路之后,就没有一天不是在找Bug的路上就是在处理Bug,给自己贴了个标签:找Bug就跟吃饭一样的男人。抒发心中的感慨之后,该干活还是的干活。

第一步:查看配置文件 确保没有出错

第二步:上网找找同是天涯落人,看看有哪位哥们也跟我一样出现了这个问题,找来找去,就找到一个更换MySQL-connector-Java jar包的解决方案,怎么看都不像能解决问题,抱着死马当活马医的心态,还是试了一下,果然不出意料,没有解决问题,PASS!

第三步:运行 hive -hiveconf hive.root.logger=DEBUG,console打印hive启动过程的log。不打不知道,一打吓一跳,看到下面血淋淋的报错信息,心凉了半截,血案啊!!!由于太长我就截了一小部分出来

[main]: ERROR DataNucleus.Datastore: Error thrown executing CREATE TABLE `SERDE_PARAMS`
(
    `SERDE_ID` BIGINT NOT NULL,
    `PARAM_KEY` VARCHAR(256) BINARY NOT NULL,
    `PARAM_VALUE` VARCHAR(4000) BINARY NULL,
    CONSTRAINT `SERDE_PARAMS_PK` PRIMARY KEY (`SERDE_ID`,`PARAM_KEY`)
) ENGINE=INNODB : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    ...
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
main]: ERROR Datastore.Schema: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    ...
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

[main]: DEBUG metastore.HiveMetaStore: admin role already exists
InvalidObjectException(message:Role admin already exists.)
    at org.apache.hadoop.hive.metastore.ObjectStore.addRole(ObjectStore.java:3187)
    ...
    at java.lang.reflect.Method.invoke(Method.java:606)

[main]: DEBUG metastore.HiveMetaStore: Failed while granting global privs to admin
InvalidObjectException(message:All is already granted by admin)
    at org.apache.hadoop.hive.metastore.ObjectStore.grantPrivileges(ObjectStore.java:3912)
    ...
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

第四步:继续搜索解决方法,然后找到了可能是字符集的原因,可以通过在mysql中将数据库的字符集改为latin1,执行以下命令: alter database hive character set latin1;

第五步:重启hive,继续看log,除了第一个exception消失了之外,其他依然存在,有些疑惑,认真看了一下,发现metastore.HiveMetaStore: admin role already exists,会不会是之前hive启动出错时留下的问题,那么把mysql中的hive数据删掉重新创建一个看看。

第六步:在mysql中执行以下命令: 
  drop database hive; 
  create database hive; 
  alter database hive character set latin1;

第七步:重启hive,查看log,问题解决了!!!

时间: 2024-12-24 14:46:45

Hive创建表格报【Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException】引发的血案的相关文章

关于HIVE做MapReduce报错:return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

大部分人没有交换分区的问题. 因为在做Linux的时候交换分区是按照内存的2倍来做的.但是我的是用VM快速装机做的.所以交换分区被设置成了等于内存. 扩展交换分区:https://blog.csdn.net/Ares_song/article/details/81203251 永久添加该文件:https://blog.csdn.net/kai_wei/article/details/53582811 另外MYSQL一个重复IP连接问题可能导致HIVE初始化实例失败,需要在所在用户执行:https

解决hiveserver2报错:java.io.IOException: Job status not available - Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

用户使用的sql: select count( distinct patient_id ) from argus.table_aa000612_641cd8ce_ceff_4ea0_9b27_0a3a743f0fe3; 下面做不同的测试: 1.beeline -u jdbc:hive2://0.0.0.0:10000 -e "select count( distinct patient_id ) from argus.table_aa000612_641cd8ce_ceff_4ea0_9b27_

Error, return code 1 from org.apache.hadoop.hive.

Hive创建表格报[Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException]这个错误: 可能是字符集的原因,可以通过在mysql中将数据库的字符集改为latin1,执行以下命令: alter database hive character set latin1 接着在mysql中执行以下命令: drop database hive; create database hive; alter da

Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.

HIVE创建表时,出现以下错误: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.) 解决方案: 这是由于字符集的问题,需要配置MySQL的字符集: mysql> alter databa

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask

我们采用亚马逊emr构建的集群,用hive查询的时候报错,FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask,查看了下面的参数,挺有帮助的 Tez内存优化 1.AM.Container大小设置 tez.am.resource.memory.mb 参数说明:Set tez.am.resource.memory.mb tobe the same as yarn.scheduler

hive中删除表的错误Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException

1:请看操作 [[email protected] hive-0.12.0-bin]$ hive Logging initialized using configuration in jar:file:/home/jifeng/hadoop/hive-0.12.0-bin/lib/hive-common-0.12.0.jar!/hive-log4j.properties hive> show tables; OK t1 tianq tianqi Time taken: 3.338 seconds

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

hive启动后,出现以下异常 hive> show databases; FAILED: Error in metadata: MetaException(message:Got exception: java.net.ConnectException Call to centos7-01/192.168.146.135:9000 failed on connection exception: java.net.ConnectException: Connection refused) FAIL

hive报错 Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct MetaStore DB connections,

学习hive 使用mysql作为元数据  hive创建数据库和切换数据库都是可以的 但是创建表就是出问题 百度之后发现 是编码问题 特别记录一下~~~ 1.报错前如图: 2.在mysql数据库中执行如下: 1 ALTER DATABASE hive CHARACTER SET latin1; 3.修改编码后创建数据库成功:

FAILED: Execution Error, return code 2 from org.apache.hadoop

错误遇到的情形: hive整合hbase,hive的数据表 load,select,insert一切正常 通过hive往hbase关联表插入数据的时候报错,错误内容如下: 2016-04-18 14:00:34,721 Stage-0 map = 0%, reduce = 0% 2016-04-18 14:00:56,491 Stage-0 map = 100%, reduce = 0% Ended Job = job_1460958898158_0001 with errors Error d