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

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 插件,提高数据处理与分析的效率。

http://www.xdnf.cn/news/14215.html

相关文章:

  • 《P1878 舞蹈课》
  • 基于Docker编译运行orb-slam2_with_semantic_labelling
  • 36. 有效的数独
  • 『uniapp』搜索功能+商品列表滚动效果(详细图文注释)
  • SAE层、BPNN层结合的深度学习模型
  • C++ 环境配置
  • XRecorder:安卓录屏,轻松高效
  • 嵌入式PADS中Route布线操作与实现
  • OVS Faucet Tutorial笔记(下)
  • 动手学深度学习Pytorch版(李沐)(5-7章)
  • 使用STM32设置GPIO中断
  • 20250611题解
  • 抖音蓝牙遥控器芯片方案、自拍器蓝牙芯片方案 简易版 io控制
  • 高精度模板
  • 【Spring源码核心篇-08】spring中配置类底层原理和源码实现
  • torchsummary库中的summary()函数
  • Kerberos快速入门之基本概念与认证基本原理
  • OpenLayers 创建坐标系统
  • Flower框架中noise_multiplier与clipped_count_stddev的关系
  • [智能客服project] AI代理系统 | 意图路由器
  • pikachu靶场通关笔记30 文件包含01之本地文件包含
  • Typecho安装后后台 404 报错解决
  • CMake实践: 以开源库QSimpleUpdater为例,详细讲解编译、查找依赖等全过程
  • Reqable・API 抓包调试 + API 测试一站式工具
  • 17_Flask部署到网络服务器
  • 【软测】接口测试 - 用postman测试软件登录模块
  • 微机原理与接口技术,期末冲刺复习资料(汇总版)
  • Linux进程间通信(IPC)详解:从入门到理解
  • H5 技术与定制开发工具融合下的数字化营销新探索
  • 高效录屏工具推荐:从系统自带到专业进阶