当前位置: 首页 > news >正文

DataX HdfsReader 插件:快速上手与深入解析

引言

在数据处理与分析的领域中,数据的高效读取与传输是至关重要的环节。DataX 作为一款强大的开源离线同步工具,为我们提供了便捷的数据同步解决方案。其中,HdfsReader 插件专门用于从 Hadoop 分布式文件系统(HDFS)中读取数据,并且能够将其转换为 DataX 传输协议传递给 Writer 进行后续处理。本文将详细介绍 DataX HdfsReader 插件的使用方法,无论是新手小白还是经验丰富的高手,都能从中获得有价值的信息。

一、快速介绍

HdfsReader 提供了读取分布式文件系统数据存储的能力。在底层实现上,它获取分布式文件系统上文件的数据,并转换为 DataX 传输协议传递给 Writer。目前 HdfsReader 支持的文件格式有 textfile(text)、orcfile(orc)、rcfile(rc)、sequence file(seq)和普通逻辑二维表(csv)类型格式的文件,且文件内容存放的必须是一张逻辑意义上的二维表。同时,HdfsReader 需要 Jdk1.7 及以上版本的支持。

二、功能与限制

2.1 支持的功能

  1. 多种文件格式支持:支持 textfile、orcfile、rcfile、sequence file 和 csv 格式的文件,且要求文件内容存放的是一张逻辑意义上的二维表。
  2. 数据读取类型丰富:支持多种类型数据读取(使用 String 表示),支持列裁剪,支持列常量。
  3. 递归与正则读取:支持递归读取、支持正则表达式(“*“和”?”)。
  4. 数据压缩支持:支持 orcfile 数据压缩,目前支持 SNAPPY,ZLIB 两种压缩方式;支持 sequence file 数据压缩,目前支持 lzo 压缩方式;csv 类型支持压缩格式有:gzip、bz2、zip、lzo、lzo_deflate、snappy。
  5. 并发读取:多个 File 可以支持并发读取。
  6. 版本兼容性:目前插件中 Hive 版本为 1.1.1,Hadoop 版本为 2.7.1(Apache[为适配 JDK1.7],在 Hadoop 2.5.0,Hadoop 2.6.0 和 Hive 1.2.0 测试环境中写入正常;其它版本需后期进一步测试。
  7. 认证支持:支持 kerberos 认证(注意:如果用户需要进行 kerberos 认证,那么用户使用的 Hadoop 集群版本需要和 hdfsreader 的 Hadoop 版本保持一致,如果高于 hdfsreader 的 Hadoop 版本,不保证 kerberos 认证有效)。

2.2 暂时的限制

  1. 单个 File 支持多线程并发读取,这里涉及到单个 File 内部切分算法,未来官方考虑支持。
  2. 目前还不支持 hdfs HA。

三、配置样例

以下是一个简单的配置样例,展示了如何使用 HdfsReader 插件从 HDFS 读取数据并打印输出:

{"job": {"setting": {"speed": {"channel": 3}},"content": [{"reader": {"name": "hdfsreader","parameter": {"path": "/user/hive/warehouse/mytable01/*","defaultFS": "hdfs://xxx:port","column": [{"index": 0,"type": "long"},{"index": 1,"type": "boolean"},{"type": "string","value": "hello"},{"index": 2,"type": "double"}],"fileType": "orc","encoding": "UTF-8","fieldDelimiter": ","}},"writer": {"name": "streamwriter","parameter": {"print": true}}}]}
}

四、参数说明(各个配置项值前后不允许有空格)

4.1 fileType

特别需要注意的是,HdfsReader 能够自动识别文件是 orcfile、textfile 或者还是其它类型的文件,但该项是必填项,HdfsReader 则会只读取用户配置的类型的文件,忽略路径下其他格式的文件。

另外需要注意的是,由于 textfile 和 orcfile 是两种完全不同的文件格式,所以 HdfsReader 对这两种文件的解析方式也存在差异,这种差异导致 hive 支持的复杂复合类型(比如 map,array,struct,union)在转换为 DataX 支持的 String 类型时,转换的结果格式略有差异,比如以 map 类型为例:

  • orcfile map 类型经 hdfsreader 解析转换成 datax 支持的 string 类型后,结果为 “{job=80, team=60, person=70}”
  • textfile map 类型经 hdfsreader 解析转换成 datax 支持的 string 类型后,结果为 “job:80,team:60,person:70”

从上面的转换结果可以看出,数据本身没有变化,但是表示的格式略有差异,所以如果用户配置的文件路径中要同步的字段在 Hive 中是复合类型的话,建议配置统一的文件格式。

如果需要统一复合类型解析出来的格式,我们建议用户在 hive 客户端将 textfile 格式的表导成 orcfile 格式的表。

  • 必选:是
  • 默认值:无

4.2 column

读取字段列表,type 指定源数据的类型,index 指定当前列来自于文本第几列(以 0 开始),value 指定当前类型为常量,不从源头文件读取数据,而是根据 value 值自动生成对应的列。

默认情况下,用户可以全部按照 String 类型读取数据,配置如下:

"column": ["*"]

用户可以指定 Column 字段信息,配置如下:

{"type": "long","index": 0    //从本地文件文本第一列获取 int 字段
},
{"type": "string","value": "alibaba"  //HdfsReader 内部生成 alibaba 的字符串字段作为当前字段
}

详细的参数说明请参考官网文档https://github.com/alibaba/DataX/blob/master/hdfsreader/doc/hdfsreader.md

五、按分区读取

Hive 在建表的时候,可以指定分区 partition,例如创建分区 partition(day=“20150820”,hour=“09”),对应的 hdfs 文件系统中,相应的表的目录下则会多出/20150820 和/09 两个目录,且/20150820 是/09 的父目录。了解了分区都会列成相应的目录结构,在按照某个分区读取某个表所有数据时,则只需配置好 json 中 path 的值即可。

比如需要读取表名叫 mytable01 下分区 day 为 20150820 这一天的所有数据,则配置如下:

"path": "/user/hive/warehouse/mytable01/20150820/*"

六、总结

通过本文的介绍,我们详细了解了 DataX HdfsReader 插件的功能、配置方法和参数说明。无论是新手还是高手,都可以根据自己的需求灵活使用该插件进行数据读取。在实际使用过程中,需要注意插件的限制条件,如单个 File 不支持多线程并发读取和不支持 hdfs HA 等。同时,对于复杂复合类型的数据,建议配置统一的文件格式以避免解析结果的差异。希望本文能够帮助你快速上手 DataX HdfsReader 插件,提高数据处理与分析的效率。

相关文章:

  • 简历模板2——数据挖掘工程师5年经验
  • 嵌入式 STM32 开发问题:烧录 STM32CubeMX 创建的 Keil 程序没有反应
  • 人工智能学习16-Numpy
  • 想开启APP开发之旅,要准备哪些资料?
  • flowable工作流的学习demo
  • stm32传感器通用驱动代码
  • 从零搭建MySQL主从复制并集成Spring Boot实现读写分离
  • Hive 性能优化:从表设计到查询执行的全链路优化
  • Windows安装部署jenkins
  • Javaweb学习——day3(Servlet 中处理表单数据)
  • Hive SQL 执行计划详解:从查看方法到优化应用
  • DataX Hive写插件深度解析:从数据写入到Hive表关联实战
  • CNN中的感受野
  • 51单片机-IO扩展模块 pcf8575
  • React中使用Day.js指南
  • 使用NVIDIA NeMo Agent Toolkit扩展现实机器人仿真的物理AI应用
  • 228永磁同步电机无速度算法--基于双重锁相环的滑模观测器
  • 如何调优Kafka
  • 深入解析JVM类加载机制
  • MATLAB交互式贝塞尔曲线演示
  • 网站设计工作室/东莞建设网
  • 成年男女做羞羞视频网站/东莞网络公司电话
  • 网站设计和程序员/关键词云图
  • 上海手机网站制作/营销培训视频课程免费
  • 阳江网站建设推广/百度竞价推广公司
  • 手机网站的静态页面/深圳全网信息流推广公司