【发布时间】:2015-09-06 17:44:18
【问题描述】:
我使用 hive 生成了一个序列文件并尝试将其导入 bigtable,我的导入作业失败并出现以下错误。
2015-06-21 00:05:42,584 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl: Diagnostics report from attempt_1434843251631_0007_m_000000_1: Error: java.lang.ClassCastException: org.apache.hadoop.io.BytesWritable cannot be cast to org.apache.hadoop.hbase.io.ImmutableBytesWritable
at com.google.cloud.bigtable.mapreduce.Import$Importer.map(Import.java:127)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
我正在使用下面的配置单元表定义和参数来生成序列文件。
create table ilv_bigtable_test(
item_id int
)
stored as sequencefile
LOCATION 'gs://zxx/xx/aa1_temp/ilv_bigtable_test/'
TBLPROPERTIES('serialization.null.format'='')
;
SET hive.exec.compress.output=true;
SET mapred.max.split.size=256000000;
SET mapred.output.compression.type=BLOCK;
insert overwrite table ilv_bigtable_test
select
item_id
FROM xxx
;
下面是hbase建表语句
create 'test', 'item_id'
【问题讨论】:
-
您使用的是什么版本的 Hive、HBase、Hadoop?从堆栈跟踪来看,它看起来不像是 Cloud Bigtable 问题,您是否在纯 HBase 上尝试过?
-
这看起来像是非 Cloud Bigtable 代码中的错误:错误:java.lang.ClassCastException: org.apache.hadoop.io.BytesWritable 无法转换为 org.apache.hadoop.hbase.io .ImmutableBytesWritable
-
我们在 hadoop 2.4 上使用 hive 0.13。是的,我们能够使用 csv bulkload 在 hbase 上加载相同的数据。 Hadoop fs -text 在序列文件上给出了正确的结果,所以不确定这个问题是否与错误的文件格式有关 hadoop fs -text gs://zzz/ssss/aa1_temp/ilv_bigtable_test/*
-
我正在关注文档cloud.google.com/bigtable/docs/exporting-importing#export-hbase,它说“从 HBase 或 Cloud Bigtable 导出表。”我们不能导入使用其他机制导出的数据。是否只支持导入 Hbase/Cloud 导出的数据集?
标签: hive hbase google-cloud-bigtable