Flink有python的SDK入门教程

Apache Flink 确实支持 Python 开发,主要通过 PyFlink 这个模块来实现。PyFlink 允许你使用 Python 编写、提交和管理 Flink 的数据流处理和批处理任务,非常适合喜欢用 Python 进行大数据开发的人。

下面是一份详细的 PyFlink 入门教程,包括安装、环境准备、Hello World 示例和一些常见问题的解答。


环境要求:

  • Python 3.7--3.11(推荐 3.8+)
  • Java 1.8 或以上(建议 Java 11)
  • 建议使用虚拟环境,如 venv 或 conda,以避免依赖冲突。

步骤一:安装 Java 环境(Ubuntu/Linux)

bash 复制代码
sudo apt-get update
sudo apt-get install openjdk-11-jdk

步骤二:新建 Python 虚拟环境并激活

bash 复制代码
python3 -m venv pyflink-env
source pyflink-env/bin/activate

步骤三:用 pip 安装 PyFlink

bash 复制代码
pip install apache-flink

2. 验证安装

在终端输入以下命令,确认可以正常导入和显示版本:

python 复制代码
python -c "import pyflink; print(pyflink.__version__)"

写一个简单的 WordCount 程序,熟悉基本用法。

保存为 word_count.py

python 复制代码
from pyflink.datastream import StreamExecutionEnvironment
from pyflink.common.typeinfo import Types

env = StreamExecutionEnvironment.get_execution_environment()

# 创建数据流
text = env.from_collection(
    collection=["hello world", "hello PyFlink"],
    type_info=Types.STRING()
)

# 转换和统计单词出现次数
counts = (
    text.flat_map(lambda s: s.split(), output_type=Types.STRING())
        .map(lambda w: (w, 1), output_type=Types.TUPLE([Types.STRING(), Types.INT()])))
results = counts.key_by(lambda x: x[0]).reduce(lambda a, b: (a, a + b))

results.print()

env.execute("word_count_example")

运行:

bash 复制代码
python word_count.py

如果输出如下,表示环境和功能都正常:

text 复制代码
('hello', 2)
('world', 1)
('PyFlink', 1)

4. 常见问题排查

  • Java 环境不同步 :确保 JAVA_HOME 设置正确,且和本机 Java 版本一致。
  • 端口冲突或内存不足 :可以通过设置 env.set_parallelism(1) 降低资源需求。

5. 进阶阅读


总结:PyFlink 提供了较完善的 Python SDK 和类 PySpark 的开发体验,非常适合 Python 用户入门分布式数据流。建议按上述步骤搭建环境,亲自运行代码,加深理解。

相关推荐
Bazingga23 分钟前
Harness学习笔记:从马具到工程外壳
后端
米多科技30 分钟前
我做了一个 3D 虚拟世界基底,在上面再搭 3D 世界或元宇宙,事半功倍
javascript·人工智能·github
法欧特斯卡雷特39 分钟前
Kotlin 新特性抢先看:伴生扩展与伴生块
后端·面试·开源
桃李醉春风1 小时前
被微信拒审那天,我才真正学会 Vibecoding:一个人 + AI,3 万行代码、1.8 万张素材的小程序全复盘
后端
她的男孩1 小时前
打印模板草稿能保存,一点发布就报主从关系:我们把校验拆成了两档
java·spring boot·后端
YonyouHRSaaS1 小时前
2026年10-11月AI面试选择指南:对国内主流AI面试系统进行对比,看看哪个更值得选!
人工智能·面试·职场和发展·hr·ai面试
Bazingga1 小时前
Embabel学习笔记:把Agent的决策权从LLM手里拿回来
后端
用户8314550980311 小时前
基于 Firecracker 自建 Agent 沙箱集群:状态机 + 文件管理 + 进程编排,附 E2B 生产经验校准
后端
武子康2 小时前
LingBot-VA 2.0 深度解析:为什么要同时预测未来世界与机器人动作
人工智能·后端·agent
wno7042 小时前
Spring Boot整合Quartz
java·spring boot·后端