[实时计算flink]使用Python依赖
您可以在Flink Python作业中使用自定义的Python虚拟环境、第三方Python包、JAR包和数据文件等,本文为您介绍如何在Python作业中使用这些依赖。
使用自定义的Python虚拟环境
说明
VVR 4.x仅支持3.7版本的Python虚拟环境,VVR 6.x及以上的版本无此限制,您可以使用更高版本的Python虚拟环境。
Python支持构建虚拟环境,每个Python虚拟环境都有一套完整的Python运行环境,并且可以在这套虚拟环境中安装一系列的Python依赖包。关于Python虚拟环境更详细的介绍,请参见Python文档创建虚拟环境。下文为您介绍如何准备Python的虚拟环境。
-
准备Python的虚拟环境。
set -e # 下载Python 3.10 miniconda.sh脚本。 wget "https://repo.continuum.io/miniconda/Miniconda3-py310_24.7.1-0-Linux-x86_64.sh" -O "miniconda.sh"# 为Python 3.10 miniconda.sh脚本添加执行权限。 chmod +x miniconda.sh# 创建Python的虚拟环境。 ./miniconda.sh -b -p venv# 激活Conda Python虚拟环境。 source venv/bin/activate ""# 安装PyFlink依赖。 # update the PyFlink version if needed pip install "apache-flink==1.17.2"# 关闭Conda Python虚拟环境。 conda deactivate# 删除缓存的包。 rm -rf venv/pkgs# 将准备好的Conda Python虚拟环境打包。 zip -r venv.zip venv说明
本文以作业为VVR 8.x,Python 3.10为例为您介绍,如果您需要使用其他VVR版本或安装其他版本的Python的虚拟环境,则需要修改以下两个参数:
-
miniconda.sh脚本信息:修改为您的目标版本地址信息。
-
apache-flink:修改为您作业使用的VVR版本对应的Flink版本,Flink版本查看方法请参见控制台操作。
-
在本地准备setup-pyflink-virtual-env.sh脚本,其内容如下。
-
在本地准备build.sh脚本,其内容如下。
#!/bin/bash set -e -xsed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*yum install -y zip wgetcd /root/ bash /build/setup-pyflink-virtual-env.sh mv venv.zip /build/ -
在命令行,执行如下命令,完成python虚拟环境的安装。
docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux2014_x86_64 ./build.sh执行完该命令后,会生成一个名字为venv.zip的文件,本示例为Python 3.10的虚拟环境。
您也可以修改上述脚本,在虚拟环境中安装所需的第三方Python包。
-
-
在Python作业中使用Python虚拟环境。
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击文件管理,上传venv.zip文件。
-
在运维中心 > 作业运维页面,单击目标作业名称。
-
在部署详情页签基础配置区域Python Archives,选择venv.zip文件。
如果SQL作业在虚拟环境中使用Python UDF,需要在运行参数配置区域的其他配置项,添加如下配置信息。
python.archives: oss://.../venv.zip -
在运行参数配置区域其他配置项,按照您作业的VVR版本添加对应的指定Python虚拟环境的安装路径的配置信息。
-
vvr-6.x及以上版本
python.executable: venv.zip/venv/bin/python python.client.executable: venv.zip/venv/bin/python -
vvr-6.x以下版本
python.executable: venv.zip/venv/bin/python
-
-
使用第三方Python包
说明
下述内容中的Zip Safe、PyPI和manylinux属于第三方搭建的网站,访问时可能会存在无法打开或访问延迟的问题。
下面将从以下两个场景为您介绍如何使用第三方Python包:
-
使用可直接Import的第三方Python包
如果您的第三方Python包是Zip Safe的,即不需要安装即可直接在Python作业中使用。操作步骤如下:
-
下载可直接Import的第三方Python包。
-
在浏览器上打开PyPI页面。
-
在搜索框中输入目标第三方Python包名称,例如apache-flink 1.12.2。
-
在搜索结果中,单击目标结果名称。
-
在左侧导航栏,单击Download files。
-
单击文件名中包含cp37-cp37m-manylinux1的包名称进行下载。
-
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击文件管理,上传第三方Python包。
-
在运维中心 > 作业运维页面,单击部署作业 > Python作业,Python Libraries项,选择所上传的第三方Python包。
-
单击保存。
-
-
使用需要编译的第三方Python包
如果您的第三方Python包是tar.gz格式的压缩包,或从其他地方下载的源码包,且压缩包的根目录下存在setup.py文件,则这种类型的第三方Python包通常需要先编译才能被使用。您需要先在与Flink兼容的环境下编译第三方Python包,然后才可在Python作业中调用第三方Python包。
推荐使用quay.io/pypa/manylinux2014_x86_64镜像容器中的Python 3.7来编译第三方Python包,使用该容器编译生成的包兼容绝大多数Linux环境,关于该镜像容器的更多信息请参见manylinux。
说明
Python 3.7的安装路径为 /opt/python/cp37-cp37m/bin/python3。
下面以opencv-python-headless第三方Python包为例,介绍一下如何编译和使用该第三方Python包。
-
编译第三方Python包。
-
在本地准备requirements.txt文件,其内容如下。
opencv-python-headless -
在本地准备build.sh脚本,其内容如下。
#!/bin/bash set -e -xsed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*yum install -y zipPYBIN=/opt/python/cp37-cp37m/bin #PYBIN=/opt/python/cp38-cp38/bin #PYBIN=/opt/python/cp39-cp39/bin #PYBIN=/opt/python/cp310-cp310/bin"${PYBIN}/pip" install --target __pypackages__ -r requirements.txt cd __pypackages__ && zip -r deps.zip . && mv deps.zip ../ && cd .. rm -rf __pypackages__ -
在CMD命令行,执行如下命令。
docker run -it --rm -v $PWD:/build -w /build quay.io/pypa/manylinux2014_x86_64 /bin/bash build.sh该命令执行完后,会生成一个名字为deps.zip的文件,该文件为编译之后的第三方Python包。
您也可以修改requirements.txt,安装其他所需的第三方Python包。此外,requirements.txt文件中可以指定多个Python依赖。
-
-
在Python作业中使用第三方Python包deps.zip。
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击文件管理,上传deps.zip。
-
在运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,在Python Libraries项,选择deps.zip。
-
-
单击保存。
-
使用JAR包
如果您的Flink Python作业中使用了Java类,例如作业中使用了Connector或者Java自定义函数时,可以通过如下方式来指定Connector或者Java自定义函数的JAR包。
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击文件管理,上传需要使用的JAR包。
-
在运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,在附加依赖文件项,选择需要使用的JAR包。
-
在运行参数配置区域其他配置项,添加配置信息。
假如需要依赖多个JAR包,且名字分别为jar1.jar和jar2.jar,配置内容如下。
pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar' -
单击保存。
使用数据文件
说明
Flink暂不支持通过上传数据文件的方式来进行python作业调试。
下面将从两个场景为您介绍如何使用数据文件:
-
通过Python Archives选项方式
如果您的数据文件的数量比较多时,您可以将数据文件打包成一个ZIP包,然后通过如下方式在Python作业中使用。操作步骤如下:
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击文件管理,上传目标数据文件ZIP包。
-
在运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,在Python Archives项,选择需要使用的数据文件ZIP包。
-
在Python自定义函数中,可以通过如下方式访问数据文件。假如数据文件所在压缩包名称为mydata.zip。
def map():with open("mydata.zip/mydata/data.txt") as f:...
-
-
通过附加依赖文件选项
如果您的数据文件数量比较少时,可以通过如下方式在Python作业中使用。操作步骤如下:
-
登录实时计算控制台。
-
单击目标工作空间操作列下的控制台。
-
在左侧导航栏,单击文件管理,上传目标数据文件。
-
在运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,,在附加依赖文件项,选择需要的数据文件。
-
在Python自定义函数中,可以通过如下方式访问数据文件。以数据文件名称为data.txt为例的代码如下。
def map():with open("/flink/usrlib/data.txt") as f:...
-
相关文章:
[实时计算flink]使用Python依赖
您可以在Flink Python作业中使用自定义的Python虚拟环境、第三方Python包、JAR包和数据文件等,本文为您介绍如何在Python作业中使用这些依赖。 使用自定义的Python虚拟环境 说明 VVR 4.x仅支持3.7版本的Python虚拟环境,VVR 6.x及以上的版本无此限制&a…...
MySql如何实现分布式锁
本篇我们使用mysql实现一个分布式锁。 环境:mysql8,navicat,maven,springboot2.3.11,mybatis-plus 分布式锁的功能 1,分布式锁使用者位于不同的机器中,锁获取成功之后,才可以对共享资源进行操作 2,锁具有重入的功能:即一个使用…...
「行内揭秘」 SQLynx数据库界的“小众宝藏”?
数据库界的“小众宝藏”?Navicat老大哥地位稳如泰山,但这位“SQLynx”小弟也不容小觑!👀 别看它小众,SQLynx在处理数据库事务上那可是丝毫不含糊,无论你是Windows Linux和Mac,甚至银河麒麟统信都…...
【已解决】【MySQL】IDEA配置数据库 报错 未配置SQL方言 无法使用SQL提示
IDEA配置数据库的步骤 下载插件 添加数据源 新建--->选择数据源MySQL 页面展示: 主机名:一般都是localhost不用改端口:填写自己的端口号用户:填写自己的用户名密码:填写自己设置的密码数据库:填写需要…...
Android 开发 调节声音 SeekBar自定义样式
效果图 xml布局 mipmap/seekbar图片随意一张图都可以,这里我的图就不贴出来了 <SeekBarandroid:id"id/seekBar"android:layout_marginLeft"8dp"android:layout_width"377dp"android:layout_height"8dp"android:layou…...
UART-通用异步收发器
1. UART的基本工作原理 UART通信主要有两个部分构成:发送器和接收器,也就是我们常见的(RX接收,TX发送)两个独立的线路来实现数据的双向传输,由于是异步的,UART并不需要时钟信号,而是…...
Linux——— 信号
文章目录 前言:引入信号生活中的例子信号概念见一见Linux中的信号 浅度理解信号信号处理(浅谈):如何自定义捕捉 信号保存(浅谈) 信号产生系统调用产生异常产生:浅谈除0异常浅谈解引用野指针异常Core &&…...
安全见闻-web安全
web安全 一、web程序简介 1. Web程序的基本构成 2. 工作流程 3. 安全性 二、JavaScript代码库 1. 代码库的概念和用途 2. 常见的代码库 三、框架 1. 常见的前端框架 2. 常见的后端框架 四、数据库 1. 数据库的分类 2. 数据库的潜在漏洞 3. 学习数据库的重要性 五、…...
华为手机卸载系统应用的方法
摘要: 1.手机环境:手机需要开启开发者模式并使用usb连接电脑,并选择文件传输模式 2.电脑环境:使用鸿蒙工具箱进行傻瓜操作或安装adb工具进行命令卸载 3.鸿蒙工具箱和adb工具本质都是使用adb shell pm uninstall -k --user 0 xx…...
力扣算法笔记——生成随机数组
题目信息: 给两个随机数和N,生成M到N的随机不重复数组,且M<N。 示例:输入M 2, N5, 输出 [4,3,2,5]. 思路:洗牌算法,先遍历M到N之间所有的数字,将得到的结果存入一个集合中,将集合从后往前遍历…...
Anaconda和Pycharm超详细安装教程(2024版本+Win11)
详细安装:https://download.csdn.net/download/qq_40379132/89924782 一、安装Anaconda 1.1 下载Anaconda 在官方网站(Free Download | Anaconda)上下载适用于你的操作系统的 Anaconda 安装包。(这里以windows为例)…...
代码随想录:从中后/中前遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树 用分治思想,后序遍历是左右中,中序遍历是左中右,后序遍历的最后一个元素就是根节点, 在中序遍历中找到它的位置,它前面的为左子树,后面的为右子树,并能计…...
2-134 基于matlab的图像边缘检测
基于matlab的图像边缘检测,采用六种算子(分别是gabor、拉普拉斯、priwitt、robert、sobel、wallis微分算子),对图象进行边缘检测比较,输出边缘检测结果。可对比效果优劣。程序已调通,可直接运行。 下载源程序请点链接…...
【Java并发编程】线程池详解
一、简介 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor 类,帮助开发人员管理线程并方便地执行并行任务。了…...
ThingsBoard规则链节点:GPS Geofencing Events节点详解
引言 1. GPS Geofencing Events 节点简介 2. 节点配置 3. 使用场景 3.1 物流跟踪 3.2 资产管理 3.3 安全监控 3.4 农业监测 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 GPS Geofencing Events 是 ThingsBoard 规则链中的一个重要节…...
Jmeter基础篇(19)JSR223预处理器
前言 JSR223预处理器是Apache JMeter中的一个组件,它允许用户使用任何支持Java Scripting API (JSR 223) 的脚本语言来执行预处理任务。这个功能非常强大,因为它让测试人员能够利用如Groovy、JavaScript(Nashorn引擎)、BeanShell…...
通过js控制css变量
在JavaScript中,你可以通过操作CSS变量(也称为自定义属性)来动态改变样式。CSS变量在CSS中使用 – 前缀定义,例如 --main-color: red;。在JavaScript中,你可以使用 document.documentElement.style.setProperty 方法来…...
Docker:容器化和虚拟化
虚拟化 虚拟化是一种资源管理技术,它将计算机的各种实体资源(如CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分割、组合为一个或多个电脑配置环境。这些资源的新虚拟部分是不受现有资源的架设方式、地域或…...
OpenSSL
OpenSSL 概述 OpenSSL 是一个开源的、安全传输协议实现工具,广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中,OpenSSL 被用于构建和维护 SSL/TLS 通信,确保数据在传输过程中的机密性和完整性。 简单来…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
