我想将一个表从hbase版本0.98群集复制到hbase版本1.2.0-cdh5.7.3群集。
运行命令:
hbase org.apache.hadoop.hbase.mapreduce.Import -Dmapreduce.job.queuename= -Dhbase.import.version=0.98 -Dmapreduce.map.speculative=false -Dmapreduce.reduce.speculative=false
但是我有这样的错误:
Error: java.lang.IllegalArgumentException: Row length is 0
at org.apache.hadoop.hbase.client.Mutation.checkRow(Mutation.java:534)
at org.apache.hadoop.hbase.client.Put.<init>(Put.java:110)
at org.apache.hadoop.hbase.client.Put.<init>(Put.java:68)
at org.apache.hadoop.hbase.client.Put.<init>(Put.java:58)
at org.apache.hadoop.hbase.mapreduce.Import$Importer.processKV(Import.java:199)
at org.apache.hadoop.hbase.mapreduce.Import$Importer.writeResult(Import.java:164)
at org.apache.hadoop.hbase.mapreduce.Import$Importer.map(Import.java:149)
at org.apache.hadoop.hbase.mapreduce.Import$Importer.map(Import.java:132)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
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:1693)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
答案 0 :(得分:0)
我刚刚遇到过这个问题 - 将数据从旧的IBM Big-Insight系统迁移到HDP。
我为解决这个问题做了什么
编写一个HappyBase程序来逐步执行hBase表(以100个键值为步骤)....
每隔几百万左右 - Python代码就会停止......
在 hbase shell 中,我在同一个键范围内进行了扫描,我可以看到列中包含格式错误的数据。
我的具体数据是格式错误的utf-8数据,导致编解码器出现问题。
我手动删除了列 - 并重复了这些步骤....
当一张表格可以被扫描时,我现在执行了Hbase导出,接着是Hbase导入 - 这一切都有效。
您可以使用Spark,通过导出数据,copyToLocal,然后使用Spark将序列文件作为RDD进行改进。然后应用您的数据过滤规则。