Hive 问题汇总

来源:互联网 发布:python核心编程知乎 编辑:程序博客网 时间:2024/06/13 02:31

转载url:http://blog.csdn.net/cjfeii/article/details/49363653


1 Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT…

当启动Hive的时候报错:

Causedby: javax.jdo.JDOException: Couldnt obtain a new sequence (unique id) : Cannot execute statement: impossible towriteto binary logsince BINLOG_FORMAT = STATEMENT andat least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.

NestedThrowables:

java.sql.SQLException: Cannot execute statement: impossibletowriteto binary logsince BINLOG_FORMAT = STATEMENT andat least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.

这个问题是由于hive的元数据存储MySQL配置不当引起的,可以这样解决:

mysql>setglobal binlog_format='MIXED';

2 For direct MetaStore DB connections, we don’t support retries at the client level.

当在Hive中创建表的时候报错:

FAILED: ExecutionError,return code 1from 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 database hivecharacterset latin1;

3 HiveConf of name hive.metastore.local does not exist

当执行Hive客户端时候出现如下错误:

WARN conf.HiveConf: HiveConfofname hive.metastore.localdoesnot exist

这是由于在0.10 0.11或者之后的HIVE版本 hive.metastore.local 属性不再使用。将该参数从hive-site.xml删除即可。

4 Permission denied: user=anonymous, access=EXECUTE, inode=”/tmp”

在启动Hive报如下错误:

(Permissiondenied: user=anonymous, access=EXECUTE, inode="/tmp":hadoop:supergroup:drwx------

这是由于Hive没有hdfs:/tmp目录的权限,赋权限即可:

hadoop dfs-chmod-R777 /tmp

5 hive drop table table_name 卡死(长时间没有反应)

在hive中,show tables,create 等命令能正常执行,删除表drop table x时,会出现卡住的现象.
进入mysql,
show variables like 'char%'
可以看到

按理说是正确的.
后面发现,是在建好hive数据库后,没有第一时间将character_set_database编码由utf8修改为latin1.而是去hive中create了一张表.而后才将character_set_database编码由utf8改成了latin

解决办法:
在mysql中将drop hive
重新create hive,
修改编码,alter database hive character set latin1
进入hive shell
创建表,drop表,正常!


0 0
原创粉丝点击