请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

hive orc文件合并报错

运行:hadoop jar ./manager-hdfsfile-merge-1.0.0-jar-with-dependencies.jar -p /hive/warehouse/ods_new -f orc -d /tmp/merge 时,报错信息如下:
Error: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.bigdata.CombineMergeOrcInputFormat not found, CombineMergeOrcInputFormat 类找不到,是什么原因? maven-assembly-plugin源码打包时没有报错。

正在回答 回答被采纳积分+3

2回答

叁金 2023-06-06 14:27:02
job = Job.getInstance(conf, jobName);
job.setJarByClass(TaskRunner.class);
//新增代码
jobconf.setJarByClass(TaskRunner.class);

你好,代码已更新,缺少上述代码。  该代码因为引用的hive包的问题导致orc合并使用的老版本的mapreduce API,顾这里需要设置jobconf,在设置jobconf的时候未set jar,导致class not found的异常。添加改行代码后可以运行。

0 回复 有任何疑惑可以回复我~
  • 提问者 mohf3126361 #1
    老师,代码更新后可以了。后面能出个hive parquet类型小文件合并的视频吗?
    回复 有任何疑惑可以回复我~ 2023-06-06 15:15:08
  • 提问者 mohf3126361 #2
    另外这个文件合并程序,和hive的事务表压缩(compact)内置指令相比较,有什么好处或不同吗?
    回复 有任何疑惑可以回复我~ 2023-06-06 15:18:51
  • 叁金 回复 提问者 mohf3126361 #3
    本质上做的工作都是类似的,都是为了将增量小文件进行合并处理。 其实在hive3版本之前,默认都不会开启事务表。相对而言通过小文件合并程序其实并不仅仅局限于hive产生的数据(当然hive数据占很大一部分)。使用起来相较hive相对更加灵活,可控性更好。 合并文件也会耗费一定的资源,所以程序提交时间可控对于大集群来讲可能比小文件数量超过xx自动触发要更加友好些。
    回复 有任何疑惑可以回复我~ 2023-06-06 15:34:21
叁金 2023-06-05 20:10:41

有更详细错误信息吗,这个类不是主类,按道理不会not found。text类型文件运行正常吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 mohf3126361 #1
    text类型文件运行正常的
    回复 有任何疑惑可以回复我~ 2023-06-05 20:11:38
  • 叁金 回复 提问者 mohf3126361 #2
    我稍后测试一下
    回复 有任何疑惑可以回复我~ 2023-06-05 20:12:19
  • 提问者 mohf3126361 回复 叁金 #3
    上传的源码中也试了,有这个问题?不知道什么原因
    回复 有任何疑惑可以回复我~ 2023-06-05 20:13:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信