2 shaguayidianhong shaguayidianhong 于 2014.04.22 14:36 提问

hive数据批量导入hbase过程中遇到分区文件不存在异常

在做一个hive数据批量导入hbase的方法,根据官方文档一步一步的做下来,但是在生成HFILE文件时却报了一个比较让人纠结的错误,在网上找了很长时间,都木有合适的答案,在hive命令行中执行的代码如下:
SET mapred.reduce.tasks=5;
SET hive.mapred.partitioner=org.apache.hadoop.mapred.lib.TotalOrderPartitioner;
SET total.order.partitioner.path=/ws/hbasetest/hbase_splits;
INSERT OVERWRITE TABLE hbase_hfiles SELECT * FROM pgc CLUSTER BY rowkey;

然后报了如下异常:
Error: java.lang.IllegalArgumentException: Can't read partitions file

    at org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner.setConf(TotalOrderPartitioner.java:116)
    at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)
    at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
    at org.apache.hadoop.mapred.MapTask$OldOutputCollector.<init>(MapTask.java:569)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
    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:1548)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)

Caused by: java.io.FileNotFoundException: File file:/inm/app/cdh5/cdhworkspace/yarn/local/usercache/hadoop/appcache/application_1397722576517_0053/container_1397722576517_0053_01_000005/_partition.lst does not exist
at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:511)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileLinkStatusInternal(RawLocalFileSystem.java:724)
at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:501)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:402)
at org.apache.hadoop.io.SequenceFile$Reader.(SequenceFile.java:1749)
at org.apache.hadoop.io.SequenceFile$Reader.(SequenceFile.java:1773)
at org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner.readPartitions(TotalOrderPartitioner.java:301)
at org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner.setConf(TotalOrderPartitioner.java:88)
... 10 more

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Job 0: Map: 1 Reduce: 5 HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0
这个异常说是找不到分区文件,但我的明明存在分区文件,但却找不着,有点郁闷了;
网上常见一种解答方式说是job运行在本地,但是这个异常和网上说的似乎不一样,有一样的,但没有答案,求高手指教

2个回答

Mrknowledge
Mrknowledge   2014.04.29 17:57

SET total.order.partitioner.path=/ws/hbasetest/hbase_splits;
分区文件必须存在于hdfs中,本地文件不能被读取。

shaguayidianhong
shaguayidianhong 额,但是分区文件生成的时候本身就是在hdfs上面啊,我们现在测试的是官网提供的一种方法https://cwiki.apache.org/confluence/display/Hive/HBaseBulkLoad是直接通过hive生成的分区文件,就在hdfs上,而且分区文件还分别拷贝了一下,但就一用到这个分区文件进行插入数据的时候就找不到,就有点郁闷了
大约 4 年之前 回复
Mrknowledge
Mrknowledge 先把分区文件上传到hdfs中
大约 4 年之前 回复
shaguayidianhong
shaguayidianhong 我也试过SET total.order.partitioner.path=hdfs://node014:9000/tmp/hbase_splits;这种方式,但还是报同样的错误,就搞得纳闷了,我们用的是hive0.12+hbase0.96进行整合的,如果不对,请问这个正确的路径应该是怎么写呢?
大约 4 年之前 回复
heyongluoyao8
heyongluoyao8   2014.05.09 13:26

请问这个问题怎么解决?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Hive 批量数据迁移
验证hive export/import 数据迁移工具
如何用Hive 往HBase里面插入大量的数据
当我们用HBase 存储实时数据的时候, 如果要做一些数据分析方面的操作, 就比较困难了, 要写MapReduce Job。 Hive 主要是用来做数据分析的数据仓库,支持标准SQL 查询, 做数据分析很是方便,于是便很自然地想到用Hive来载入HBase的数据做分析, 但是很奇怪地是, 上网查了一下, 只看到以下两种情况: 1. 如何用Hive 往HBase里面插入大量的数据。 2.
hbase测试过程中遇到的一些问题及解决方案
1、hbase启动regionserver自动挂掉    出现此问题先看看个个hbase节点是时间是否同步,没同步就同步时间,hbase各节点如果时间不同步会有此类问题    也有可能是并发太大导致的问题 2、zookeeper连接过多问题:    修改ZOOKEEPER_HOME/conf/zoo.cfg文件,在其中加入:maxClientCnxns=10000    同时修改
HBase-7.hbase查询多版本数据&过滤器原则&批量导入Hbase&hbase预分区
HBase怎么查询同一条记录多个版本数据 (1)Hbase shell命令模式 get 'stu','rk01', {COLUMN => 'info:name', VERSIONS => 5} (2)JAVA  API 模式 Get get = new Get("rk01".getBytes()); get.addColumn("info"
Hive 数据导入HBase的2种方法详解
1、Hive 外部表2、MapReduce 写入 HBase Hive 数据导入HBase的2种方法详解 王建奎Jerrick 发表于2年前       原Hive 数据导入HBase的2种方法详解  收藏 王建奎Jerrick   发表于 2年前 阅读 3785
Hbase配置中出现的问题总结
在create table的时候出现如下问题 1. ERROR: java.io.IOException: Table Namespace Manager not ready yet, try again later 解决方案:这个问题是从单机配置到多机配置的时候出的问题,修改conf/hbase-env.sh 注释掉export HBASE_MANAGES_ZK=true
Hive数据导入HBase
在Hive创建数据保存在HBase的表方式,这种方法的特点是简单,但是数据量超过千万以后 ,数据偏移现象比较明显,效率不高 在定义Hive的UDF,将数据写入HBase,如果提前将HBase表的regen分好,这种直接put的方法效率还行 直接用MapReduce生成Hfile,然后导入HBase,这种方法的特点是程序步奏很多,但是效率高,每分钟轻松能到3000万数据
java开发过程中常见的异常
1. java.lang.nullpointerexception   这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来
Pig脚本从Hive中load数据并存入到Hbase中
Pig脚本从Hive中load数据并存入到Hbase中
Java中常见异常处理、文件File类、流的知识点总结
一、常见的异常处理情况   在Java中常见的两种异常处理:捕捉异常(try-catch-finally)和抛出异常(throw-throws) 1.捕捉异常(try/catch/finally): 用捕捉异常时,不能try、catch、finally单独使用,需要配套使用,入try-catch、try-catch-finally等 基本语法结构:try { // 可能会发生异