我们用Hive去连接一个Hbase款表,大概有150多个字段。
因此,就报了异常:
FAILED: Error in metadata: MetaException(message:javax.jdo.JDODataStoreException: Put request failed : INSERT INTO `SERDE_PARAMS` (`PARAM_VALUE`,`SERDE_ID`,`PARAM_KEY`) VALUES (?,?,?)
NestedThrowables:
org.datanucleus.store.mapped.exceptions.MappedDatastoreException: INSERT INTO `SERDE_PARAMS` (`PARAM_VALUE`,`SERDE_ID`,`PARAM_KEY`) VALUES (?,?,?) )
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
后来翻了墙,查了谷歌度娘,发现了原因。
在hive元数据中,存放serde信息的是一个varchar(4000)的字段,为了兼容oracle。
但是超过4000个字段怎么办?
目前使用的是mysql数据库,解决方法是将字段扩充成30000如下:
mysql> desc SERDE_PARAMS;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| SERDE_ID | bigint(20) | NO | PRI | NULL | |
| PARAM_KEY | varchar(256) | NO | PRI | NULL | |
| PARAM_VALUE | varchar(4000) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
3 rows in set (0.03 sec)
mysql> alter table SERDE_PARAMS modify column PARAM_VALUE varchar(30000);
Query OK, 447 rows affected (0.86 sec)
Records: 447 Duplicates: 0 Warnings: 0
mysql> desc SERDE_PARAMS;
+-------------+----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------+------+-----+---------+-------+
| SERDE_ID | bigint(20) | NO | PRI | NULL | |
| PARAM_KEY | varchar(256) | NO | PRI | NULL | |
| PARAM_VALUE | varchar(30000) | YES | | NULL | |
+-------------+----------------+------+-----+---------+-------+
3 rows in set (0.08 sec)
异常解决。
但是只能暂时解决MySQL库中的问题,加入元数据存在其他库,则还会存在这样的问题。
相关推荐
浅谈Hive vs. HBase,大数据类
jdk1.8.0_131、apache-zookeeper-3.8.0、hadoop-3.3.2、hbase-2.4.12 mysql5.7.38、mysql jdbc驱动mysql-connector-java-8.0.8-dmr-bin.jar、 apache-hive-3.1.3 2.本文软件均安装在自建的目录/export/server/下 ...
hive0.8.1和hbase0.92.0集成的hive-hbase-handler.Jar包,里面包含:hbase-0.92.0.jar、hbase-0.92.0-tests.jar、hive-hbase-handler-0.9.0-SNAPSHOT.jar。经测试没有问题。
hive0.10.0和hbase0.94.4集成的hive-hbase-handler.Jar包,经测试没有问题。
被编译的hive-hbase-handler-1.2.1.jar,用于在Hive中创建关联HBase表的jar,解决创建Hive关联HBase时报FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoop....
HIVE建表时可以指定映射关系直接读取HBASE的数据,相当于有了一个HBASE向HIVE的通道。那HIVE向HBASE有通道吗?本文主要讲述了Hive库数据如何入到HBASE中。
配置,测试,导入数据详细操作,CREATE TABLE hive_hbase_table(key int, value string,name string) hadoop jar /usr/lib/hbase/hbase-0.90.4-cdh3u3.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY, catgyname...
Hive与Hbase的整合,集中两者的优势,使用HiveQL语言,同时具备了实时性
hive和hbase整合的时候,如果出现不兼容的情况需要手动编译:hive-hbase-hander-1.2.2.jar把这个jar替换掉hive/lib里的那个jar包
hive与hbase整合经验谈
由于大数据里面涉及到非关系型数据库如hive、kudu、hbase等的数据迁移,目前涉及到的迁移工具都没有支持hive数据库的事务表的迁移,如果hive库里面存在大量的事务表的时候,目前的工具都是不支持的,例如华为的CDM,...
HBase2.1.3整合Hive3.1.2,Hive官方的hive-hbase-handler-3.1.1.jar包不好用,自己编译后的,确认好用
该文档保护了目前比较流行的大数据平台的原理过程梳理。Hadoop,Hive,Hbase,Spark,MapReduce,Storm
Hadoop Hive与Hbase整合配置
mapreduce方式入库hbase hive hdfs,速度很快,里面详细讲述了代码的编写过程,值得下载
hive和hbase的整合所需要的编译后的jar包。 注意:这里的hbase版本为:1.2.1 hive的版本为:1.2.1
Hive-1.2.1与HBase-1.3.1兼容处理的jar包 hive-hbase-handler-1.2.2.jar
大数据 HIVE HBASE 区别