【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

问题背景:

最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报错信息如下:

问题一:datax读取hive分区表时,datax-hdfsReader 读取空目录报错

问题描述:

com.alibaba.datax.common.exception.DataXException: Code:[HdfsReader-08], Description:[您尝试读取的文件目录为空.].  - 未能找到待读取的文件,请确认您的配置项path: /user/hive/warehouse/dws.db/dws_index_business_xzkh/dt_date=2024-01-02

关键信息:

INFO HdfsReader$Job - 您即将读取的文件数为: [0], 列表为: [] Code:[HdfsReader-08], Description:[您尝试读取的文件目录为空.]. - 未能找到 待读取的文件,请确认您的配置项 path:具体路径  /user/hive/warehouse/dws.db/dws_index_business_xzkh/dt_date=2024-01-02

错误分析:

由于上层数据处理逻辑没有生成任何数据导致未生成任何目录和文件(如果上层 逻辑有自动创建目录,则会出现该问题)

问题很简单,因为该分区下没有数据文件所以报错。

这个解决也很容易。

1.当时想的是在shell里判断分区路径是否存在 然后hdfs dfs -ls /path |wc -l 看文件个数是否>0

   后来发现这种不是很可取。

2.当时就觉得这种判断不太对,以前其他reader的时候怎么不见报错,hdfsReader就报错是吧。

   哪里报错丢异常 我改成 warn就好了。

问题解决

找到报错点

处理方法一:

那全部原因就是 emptyDirIsExecption 再看

/**emptyDirIsExecption  默认值为true,当指定为false,空目录任务会返回成功,同步记录数为0**/
private Boolean emptyDirIsExecption=null;
再看,这里就是很清楚了

emptyDirIsExecption = this.readerOriginConfig.getBool(Key.EMPTY_DIR_IS_EXECPTION, true);
 我们设置在json里设置 emptyDirIsExecption=false即可。

根据网上的这个方法我没改成,只能继续研究源码。

处理方法二:修改源码,最简单的办法就是把throw的异常,仅用LOG.warn打印出来即可。

将原有的抛出异常修改为打印错误记录终止本次调度任务(结果记为 成功避免后续任务正常进行,具体该如何处理需要根据具体业务决定),修改的 Java 文件为 位于 hdfsreader 工程下的 com.alibaba.datax.plugin.reader.hdfsreader.HdfsReader。  

        public List<Configuration> split(int adviceNumber) {LOG.info("split() begin...");List<Configuration> readerSplitConfigs = new ArrayList<Configuration>();// warn:每个slice拖且仅拖一个文件,// int splitNumber = adviceNumber;int splitNumber = this.sourceFiles.size();if (0 == splitNumber) {// throw DataXException.asDataXException(HdfsReaderErrorCode.EMPTY_DIR_EXCEPTION,//        String.format("未能找到待读取的文件,请确认您的配置项path: %s", this.readerOriginConfig.getString(Key.PATH)));//异常处理逻辑修改LOG.warn(String.format("未能找到待读取的文件,请确认您的配置项path: %s", this.readerOriginConfig.getString(Key.PATH)));LOG.info("split() end");LOG.info("Task exited with return code 0");System.exit(0);}

重新打包后,替换安装目录下 /data/datax/plugin/reader/hdfsreader 下的 hdfsreader-0.0.1-SNAPSHOT.jar 包。(记得如果是ha,还要提前将hdfs-site和core-site文件打到包里),如果海豚调度搭建的是集群,请将集群中的都修改了,不用重启海豚直接执行任务就行。

问题二:datax读取hive分区表时,datax-hdfsReader 读取目录不存在报错

问题描述:

DataX 组件读取的目录不存在导致调度任务报错,错误信息截图如下:

关键信息:

ERROR HdfsReader$Job - 无法读取路径[具体路径] 下的所有文件,请确认您的配 置项 fs.defaultFS, path 的值是否正确,是否有读写权限,网络是否已断开! java.io.FileNotFoundException: File 具体路径 does not exist.

错误分析:

由于上层数据处理逻辑没有生成任何数据导致未生成表分区目录。

问题解决:

修改源码,在目录读取前做判断如果目录不存在打印系统错误日志并终止本次调 度任务(结果记为成功避免后续任务正常进行,具体该如何处理需要根据具体业务决定), 修改的 Java 文件为位于 hdfsreader 工程下的 com.alibaba.datax.plugin.reader.hdfsreader. DFSUtil。

重新打包后,替换安装目录下 /data/datax/plugin/reader/hdfsreader 下的 hdfsreader-0.0.1-SNAPSHOT.jar 包。(记得如果是ha,还要提前将hdfs-site和core-site文件打到包里),如果海豚调度搭建的是集群,请将集群中的都修改了,不用重启海豚直接执行任务就行。

这里要说一下,我们改源码请找自己对应版本的源码,别找错了

【DATAX】datax读取hive分区表时,空分区任务报错问题解决_datax hdfdsreader 读 hive分区表

【DataX】Dolphinscheduler调度Datax任务读取Hive分区表案例_目前支持orc,sequence,rcfile,text,csv五种格式的文件,请检查您文件类型和文

最简单dophinscheduler 集成datax步骤_dolphinescheduler datax

Dolphinscheduler配置Datax踩坑记录_dolphinscheduler datax

datax-hdfsReader空目录报错_datax hdfsreader

gitee的代码传送门:https://gitee.com/mirrors_alibaba/DataX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JUC之锁

乐观锁和悲观锁 悲观锁 当一个线程在操作资源的时候&#xff0c;会悲观的任务有其他的线程会来抢占该资源&#xff0c;因此会在操作资源前进行加锁&#xff0c;避免其他线程抢占。 Synchronized关键字和Lock实现类就是悲观锁。 显示的锁定资源后再对资源进行操作。 使用场景&…

RestTemplate 添加公共的请求头信息

场景描述 项目中 有很多的RestTemplate 接口&#xff0c;去调用第三方系统&#xff0c;原来第三方系统没有开启权限认证&#xff0c;可以直接调用。现在第三方系统开启了权限认证&#xff0c;导致 这些 RestTemplate 接口调用的时候&#xff0c;无法获取数据。 思路 RestTem…

生日视频模板-试试这样制作

视频制作已经成为表达情感、记录生活的重要方式。尤其在生日这样的特殊日子&#xff0c;一份个性化的视频祝福不仅能让人感到温馨&#xff0c;还能成为长久珍藏的回忆。那么&#xff0c;如何快速制作出精美的生日模版视频呢&#xff1f;下面就给大家介绍几种可以制作生日模版的…

通信入门系列——离散卷积、连续卷积、卷积性质

本节目录 一、线性系统的激励响应 1、离散δ信号 2、离散卷积 3、连续δ信号 4、连续卷积 二、卷积性质 1、交换律 2、分配律 3、结合律 4、与冲激函数卷积本节内容 一、线性系统的激励响应 输入信号又称为激励&#xff0c;输出信号又称为响应。一个信号输入给一个线性系统的时…

基于单片机设计的智慧农业大棚检测系统

一、设计目标 本项目基于单片机设计一个智慧农业大棚检测系统&#xff0c;以提供实时监测和管理大棚环境的关键参数。系统支持环境温度、湿度检测&#xff0c;光照强度检测&#xff0c;并能根据预设的阀值进行报警提示。为了实现数据的显示和管理&#xff0c;该系统还利用Qt开…

\deep\和>>> 以及 !important

记录 https://blog.csdn.net/weixin_43422861/article/details/134716359 都是深度选择器 >>> 仅在css中起作用 ::v-deep 和 /deep/ 仅在scss / less中起作用样式中 !important 用在某个样式后面起作用

生成式人工智能研究焦点:揭秘基于扩散的模型

生成式人工智能研究焦点&#xff1a;揭秘基于扩散的模型 文章目录 生成式人工智能研究焦点&#xff1a;揭秘基于扩散的模型去噪扩散是什么让扩散发挥作用&#xff1f;采样生成图像的设计选择以更少的步骤理顺流程在低噪音水平下步骤高阶求解器可实现更准确的步骤训练降噪器的设…

50天精通Golang(第17天)

beego框架总结及数据库连接配置 一、beego框架总结 1.1 Beego项目组织架构 上节课程内容对beego的案例代码进行了一个简单的分析&#xff0c;总结一下beego项目的组织结构&#xff0c;总结如下&#xff1a; 1.1.1 项目配置&#xff1a;conf 项目配置文件所在的目录&#x…

Vue安装项目报错default@0.1.0 serve: `vue-cli-service serve`解决办法

出现此问题的原因&#xff1a;项目缺少依赖项 解决方式&#xff1a;将项目中的node_modules和package-lock.json两个文件手动删除掉&#xff0c;然后在VS窗口中&#xff0c;执行npm install。重启VS即可。

异常处理注解 @ExceptionHandler

今天记录下 SpringBoot 中 ExceptionHandler 的使用。 场景 有一个员工表(employee)&#xff0c;且给表中的 username 属性设置了唯一性。 -- auto-generated definition create table employee (id bigint auto_increment comment 主键primary key,name va…

【WPF.NET开发】OpenType字体

本文内容 OpenType 字体格式变量大写字母连字花体备用项数字样式版式类 本主题概述了 Windows Presentation Foundation (WPF) 中 OpenType 字体技术的一些主要功能。 1、OpenType 字体格式 OpenType 字体格式是 TrueType 字体格式的扩展&#xff0c;增加了对 PostScript 字…

解析Nginx配置文件conf中的常用块

解析Nginx配置文件conf中的常用块 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;它的配置文件主要由多个块组成。本文将介绍Nginx配置文件中的常用块及其功能。 events块 events块用于设置Nginx的工作模式和连接数相关的参数。 events {worker_connections 1024; #…

用python调用Mybatis

要使用Python调用MyBatis&#xff0c;您需要按照以下步骤进行操作&#xff1a; 安装MyBatis和相关依赖库 在Python中使用MyBatis&#xff0c;需要先安装MyBatis和相关依赖库。您可以使用pip命令安装MyBatis的Python客户端库&#xff0c;例如&#xff1a; shell复制代码 pip …

Linux的SSH远程管理和服务器之间的免密连接

目录 一、远程管理基础 1.ssh协议 2.ssh原理 3、使用ssh协议传输的命令 4.登录方法 二、免密连接 1.免密连接的原理 2.实战 一、远程管理基础 1.ssh协议 ssh协议是基于C/S机构的安全通道协议&#xff0c;通信数据进行加密处理&#xff0c;用于远程管理。 ssh的服务名…

MATLAB二维与三维绘图实验

本文MATLAB源码&#xff0c;下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740747 一、实验目的 掌握图形对象属性的基本操作。掌握利用图形对象进行绘图操作的方法。 二、实验内容 利用图形对象绘制曲线&#xff…

【图解数据结构】深入剖析时间复杂度与空间复杂度的奥秘

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;图解数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️算法的定义二. ⛳️算法的特性2.1 &#x1f514;输入输出2.2 &#x1f514;输入输出2.3 &…

MySQL面试题2

文章目录 面试题 (9-15) 面试题 (9-15) 09&#xff09;查询学过「张三」老师授课的同学的信息 SELECT s.*,c.cname,t.tname FROM t_mysql_teacher t,t_mysql_student s,t_mysql_course c,t_mysql_score sc WHERE t.tidc.tid and c.cidsc.cid and sc.sids.sid and tname ‘张…

24校招,Moka测试开发工程师一面

前言 大家好&#xff0c;今天回顾一下楼主当时参加moka测试开发工程师的面试 对其中一些重要问题&#xff0c;我也给出了相应的答案 过程 自我介绍挑一个项目&#xff0c;详细介绍你在其中担任的职责如何安排工作的&#xff0c;有什么成果&#xff1f;回归测试如何设计&…

网站建设网络设计营销类网站eyouCMS模板(PC+WAP)

模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xff0c;原创设计、手工书写DIVCSS&#xff0c;完美兼容IE7、Firefox、Chrome、360浏览器等&#xff1b;主流浏览器&#xff1b;结构容易优化&#xff1b;多终端均可正常预览。