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

Hadoop Formats 在 Flink 里复用 Hadoop InputFormat(flink-hadoop-compatibility)

1、项目依赖配置

核心依赖是 Flink 的兼容模块:

<dependency><groupId>org.apache.flink</groupId><artifactId>flink-hadoop-compatibility</artifactId><version>2.2.0</version></dependency>

如果你要在本地(IDE / MiniCluster)跑起来,通常还需要带上一个 Hadoop 客户端依赖(本地有 class 才能初始化 Hadoop 相关类):

<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.10.2</version><scope>provided</scope></dependency>

实战建议:

  • 集群环境里 Hadoop 依赖往往由平台(YARN/HDFS)提供,你本地为了能跑通需要加hadoop-client
  • 如果你是打 fat jar 跑 standalone/K8s,就要更谨慎处理 Hadoop 依赖冲突(常见是guavajacksonnetty版本冲突)。

2、两种包法:readHadoopFile vs createHadoopInput

Flink 通过HadoopInputs提供两种方式把 Hadoop InputFormat 包装成 Flink InputFormat:

  • readHadoopFile(...):用于继承自 Hadoop 的 FileInputFormat的场景(典型:读 HDFS 文件类格式)
  • createHadoopInput(...):用于通用 InputFormat(不一定是文件类,例如某些外部系统的 InputFormat)

包装后的 Source 输出类型是一个二元组:Tuple2<K, V>

  • f0:key
  • f1:value

这点非常重要:你后续处理 DataStream 的时候,要把 key/value 拆开理解。

3、示例:使用 Hadoop 的 KeyValueTextInputFormat

下面示例演示如何把 Hadoop 的KeyValueTextInputFormat作为 Flink Source:

importorg.apache.flink.api.java.tuple.Tuple2;importorg.apache.flink.streaming.api.datastream.DataStream;importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;importorg.apache.flink.hadoopcompatibility.HadoopInputs;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapred.KeyValueTextInputFormat;publicclassHadoopInputFormatDemo{publicstaticvoidmain(String[]args)throwsException{StreamExecutionEnvironmentenv=StreamExecutionEnvironment.getExecutionEnvironment();StringtextPath="hdfs:///path/to/input";KeyValueTextInputFormattextInputFormat=newKeyValueTextInputFormat();DataStream<Tuple2<Text,Text>>input=env.createInput(HadoopInputs.readHadoopFile(textInputFormat,Text.class,Text.class,textPath));// 业务处理:把 Text 转成 StringDataStream<String>lines=input.map(kv->"key="+kv.f0.toString()+", value="+kv.f1.toString());lines.print();env.execute("hadoop-inputformat-demo");}}

4、典型使用场景与坑位

常见适配场景:

  • 你要读一个历史遗留的 Hadoop InputFormat(比如某个自研存储、HBase/Hive 的某些格式、云厂商的 InputFormat)
  • 已经有成熟的 MR InputFormat + 配置参数(账号、表名、列族、分区等),直接复用最省时间

容易踩的坑:

  • 依赖冲突:Hadoop 生态依赖链很长,尤其本地 IDE 跑最容易爆 classpath 冲突
  • Key/Value 语义:输出一定是Tuple2<K,V>,不要直接当成一行文本
  • 配置注入:很多 InputFormat 依赖 Hadoop Configuration(账号、endpoint、table 等),你需要在创建 InputFormat 或 Job/Configuration 时把参数设全
  • 批/流差异:很多 Hadoop InputFormat 本质是“批式读取”,更适合 BATCH runtime;如果你硬塞进 streaming job,它也只是周期性读一遍(不是增量监控)、
http://www.jsqmd.com/news/244267/

相关文章:

  • 宏智树 AI:期刊论文投稿通关密码!从选题到见刊的智能加速器
  • 深度学习毕设项目:基于python_CNN深度学习训练识别橘子是否新鲜基于python_CNN深度学习卷积神经网络训练识别橘子是否新鲜
  • 零代码开发平台有哪些?
  • 宏智树 AI:课程论文写作 “开挂神器”!告别凑字数,轻松搞定高分作业
  • 【课程设计/毕业设计】基于卷积神经网络训练识别橘子是否新鲜基于python_CNN深度学习卷积神经网络训练识别橘子是否新鲜
  • 【2026必看】AI Agent完全指南:从零掌握大模型核心架构,建议收藏学习
  • 家庭食谱管理系统 Recipes 怎么搭?用服务器自建一个“全家共享”的菜谱库
  • HG_REPMGR autofailvoer自动故障转移
  • 2026年网络安全学习路线,零基础入门到精通,看这篇就够了!赶紧收藏!
  • 【必看收藏】RAG分块策略全解析:从入门到精通,解决大模型企业应用痛点
  • 【2026年最新整理】网络安全学习路线,入门到入坟,史上最全网络安全学习路线整理
  • MySQL JOIN语法深度解析:从理论到实践的完整指南
  • CSV Format Flink / PyFlink 读写 CSV 的正确姿势(含 Schema 高级配置)
  • 直流母线电压采集与缓冲调理电路
  • 2026 年计算机圈赚钱技能:必学技术盘点,高薪赛道认准这些!
  • Aliro统一生态、UWB精准无感,2026智能门锁格局将迎巨变
  • 国外论文参考文献怎么找:实用方法与资源推荐
  • 最近在搞永磁同步电机离线参数辨识的项目,发现不少新手在玩SVPWM时总会遇到死区补偿和高频注入这两个大坑。今天就拿Simulink模型说事,咱们边看代码边唠嗑
  • 深度学习毕设选题推荐:基于python_CNN机器学习卷积神经网络训练识别橘子是否新鲜基于python_CNN深度学习卷积神经网络训练识别橘子是否新鲜
  • 基于51单片机的车辆出入光电传感管理系统设计
  • Spark Streaming:Spark的实时流计算API
  • 20 个超实用 CTF 练习平台,让你从菜鸟进阶大神!零基础入门到精通,看这篇就够!
  • 亲测好用专科生必看TOP9AI论文平台测评
  • 基于STM32F407设计的汽车仪表系统
  • COMSOL玩转锂枝晶:四种生长模式实操指南
  • 收藏这份AI客服构建指南:有赞从0到1的实践经验与思考
  • 网络安全小白自学指南:不用拜师学艺,求人不如靠自己
  • 建议收藏:大模型时代程序员新机遇:6大高薪岗位技能要求全解析
  • 全网最全8个AI论文写作软件,助你轻松搞定本科毕业论文!
  • 使用安全版数据库开启ssl加密后jdbc写法