背景
最近在调研flink,因是python技术栈,故研究了一番如何使用python代码来进行flink的开发,首先就是对pyflink的安装,折腾了一番终于安装成功。关于flink的介绍,可看 https://flink.apache.org/zh/
测试环境
操作系统: centos7.5
python:python 3.7.6
maven:3.3.9
jdk:1.8
node:12.15.0
以上环境需要提前配置好
注意maven配置下阿里源,否则编译过程十分漫长
阿里源配置在apache-maven-3.3.9/conf/settings.xml中,内容如下:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
flink编译
1、首先下载flink源码:https://flink.apache.org/zh/downloads.html
下载完成上传至服务器后执行以下命令:
tar -zxvf flink-1.9.2-src.tgz
cd flink-1.9.2
2、编译flink
这一步的目的是构建flink的jar包,把源码编译成python的依赖包,然后用pip安装依赖包到python库中
mvn clean install -DskipTests -Dfast
这一步问题比较大,可能会耗时较长,会出现各种奇怪的错误,根据提示内容搜索相关解决方法。
第一次测试时,似乎阿里源有问题导致的找不到很多包,次日再次编译时顺利完成。另外编译过程中如果失败,最好删掉原有的编译文件重新执行编译命令。
编译成功会显示 :
BUILD SUCCESS 注意看编译最后显示内容
构建PyFlink
进入Flink源码根目录,并执行以下命令,构建PyFlink的源码发布包和wheel包:
# 注: 执行以下命令设置版本(临时性需要)
VERSION=`grep "^version:" docs/_config.yml | awk -F'\"' '{print $2}'`
cd flink-python; perl -pi -e "s#^__version__ = \".*\"#__version__ = \"${VERSION}\"#" pyflink/version.py
# 打包
python3 setup.py sdist bdist_wheel
构建好的源码发布包和wheel包位于./flink-python/dist/目录下。使用pip安装
pip install dist/*.tar.gz
安装过程中,如果没有出现错误就安装好了,通过命令查看是否安装完成
pip freeze

pyflink安装完成
flink服务安装
本次测试没有使用源码编译后的结果安装flink,而是直接下载的完整版,见下载flink源码处图片中的第一或第二选项。
下载完成后上传至服务器,执行以下命令:
tar -zxvf flink-1.9.2-bin-scala_2.12.tgz
cd flink-1.9.0
启动本地flink
./bin/start-cluster.sh # Start Flink
以上flink服务已开启,通过浏览器访问:http://服务器id:8081可看到网站内容
python demo
官方案例: https://ci.apache.org/projects/flink/flink-docs-release-1.9/zh/tutorials/python_table_api.html
参考文章排序:
1、https://flink.apache.org/zh/ 了解flink是什么
2、https://ci.apache.org/projects/flink/flink-docs-release-1.9/zh/flinkDev/building.html#build-pyflink 从源码构建flink(只要编译没问题,pyflink的安装就会简单许多)
3、https://ci.apache.org/projects/flink/flink-docs-release-1.9/zh/getting-started/tutorials/local_setup.html#start-a-local-flink-cluster 本地flink已编译版启动flink服务
4、https://ci.apache.org/projects/flink/flink-docs-release-1.9/zh/tutorials/python_table_api.html python代码案例
5、https://cloud.tencent.com/developer/article/1500227 如何在 Apache Flink 中使用 Python API? python api架构讲述比较详细易懂的文章
6、https://segmentfault.com/a/1190000021634532?utm_source=tag-newest
来源:CSDN
作者:HYESC
链接:https://blog.csdn.net/HYESC/article/details/104266790