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

[实时计算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的虚拟环境。

  1. 准备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版本查看方法请参见控制台操作。

    1. 在本地准备setup-pyflink-virtual-env.sh脚本,其内容如下。

    2. 在本地准备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/
    3. 在命令行,执行如下命令,完成python虚拟环境的安装。

      docker run -it --rm -v $PWD:/build  -w /build quay.io/pypa/manylinux2014_x86_64 ./build.sh

      执行完该命令后,会生成一个名字为venv.zip的文件,本示例为Python 3.10的虚拟环境。

      您也可以修改上述脚本,在虚拟环境中安装所需的第三方Python包。

  2. 在Python作业中使用Python虚拟环境。

    1. 登录实时计算控制台。

    2. 单击目标工作空间操作列下的控制台

    3. 在左侧导航栏,单击文件管理,上传venv.zip文件。

    4. 运维中心 > 作业运维页面,单击目标作业名称。

    5. 部署详情页签基础配置区域Python Archives,选择venv.zip文件。

      如果SQL作业在虚拟环境中使用Python UDF,需要在运行参数配置区域的其他配置项,添加如下配置信息。

      python.archives: oss://.../venv.zip
    6. 运行参数配置区域其他配置项,按照您作业的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作业中使用。操作步骤如下:

    1. 下载可直接Import的第三方Python包。

      1. 在浏览器上打开PyPI页面。

      2. 在搜索框中输入目标第三方Python包名称,例如apache-flink 1.12.2。

      3. 在搜索结果中,单击目标结果名称。

      4. 在左侧导航栏,单击Download files。

      5. 单击文件名中包含cp37-cp37m-manylinux1的包名称进行下载。

    2. 登录实时计算控制台。

    3. 单击目标工作空间操作列下的控制台

    4. 在左侧导航栏,单击文件管理,上传第三方Python包。

    5. 运维中心 > 作业运维页面,单击部署作业 > Python作业,Python Libraries项,选择所上传的第三方Python包。

    6. 单击保存

  • 使用需要编译的第三方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包。

    1. 编译第三方Python包。

      1. 在本地准备requirements.txt文件,其内容如下。

        opencv-python-headless
      2. 在本地准备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__
      3. 在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依赖。

    2. 在Python作业中使用第三方Python包deps.zip。

      1. 登录实时计算控制台。

      2. 单击目标工作空间操作列下的控制台

      3. 在左侧导航栏,单击文件管理,上传deps.zip。

      4. 运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,在Python Libraries项,选择deps.zip。

    1. 单击保存

使用JAR包

如果您的Flink Python作业中使用了Java类,例如作业中使用了Connector或者Java自定义函数时,可以通过如下方式来指定Connector或者Java自定义函数的JAR包。

  1. 登录实时计算控制台。

  2. 单击目标工作空间操作列下的控制台

  3. 在左侧导航栏,单击文件管理,上传需要使用的JAR包。

  4. 运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,在附加依赖文件项,选择需要使用的JAR包。

  5. 运行参数配置区域其他配置项,添加配置信息。

    假如需要依赖多个JAR包,且名字分别为jar1.jar和jar2.jar,配置内容如下。

    pipeline.classpaths: 'file:///flink/usrlib/jar1.jar;file:///flink/usrlib/jar2.jar'
  6. 单击保存

使用数据文件

说明

Flink暂不支持通过上传数据文件的方式来进行python作业调试。

下面将从两个场景为您介绍如何使用数据文件:

  • 通过Python Archives选项方式

    如果您的数据文件的数量比较多时,您可以将数据文件打包成一个ZIP包,然后通过如下方式在Python作业中使用。操作步骤如下:

    1. 登录实时计算控制台。

    2. 单击目标工作空间操作列下的控制台

    3. 在左侧导航栏,单击文件管理,上传目标数据文件ZIP包。

    4. 运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,在Python Archives项,选择需要使用的数据文件ZIP包。

    5. 在Python自定义函数中,可以通过如下方式访问数据文件。假如数据文件所在压缩包名称为mydata.zip。

      def map():with open("mydata.zip/mydata/data.txt") as f:...
  • 通过附加依赖文件选项

    如果您的数据文件数量比较少时,可以通过如下方式在Python作业中使用。操作步骤如下:

    1. 登录实时计算控制台。

    2. 单击目标工作空间操作列下的控制台

    3. 在左侧导航栏,单击文件管理,上传目标数据文件。

    4. 运维中心 > 作业运维页面单击目标作业名称,在部署详情页签基础配置区域,单击编辑后,,在附加依赖文件项,选择需要的数据文件。

    5. 在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不用改端口:填写自己的端口号用户:填写自己的用户名密码:填写自己设置的密码数据库:填写需要…...

js 通过filter 实现扁平化数据tree

...

Android 开发 调节声音 SeekBar自定义样式

效果图 xml布局 mipmap/seekbar图片随意一张图都可以&#xff0c;这里我的图就不贴出来了 <SeekBarandroid:id"id/seekBar"android:layout_marginLeft"8dp"android:layout_width"377dp"android:layout_height"8dp"android:layou…...

UART-通用异步收发器

1. UART的基本工作原理 UART通信主要有两个部分构成&#xff1a;发送器和接收器&#xff0c;也就是我们常见的&#xff08;RX接收&#xff0c;TX发送&#xff09;两个独立的线路来实现数据的双向传输&#xff0c;由于是异步的&#xff0c;UART并不需要时钟信号&#xff0c;而是…...

Linux——— 信号

文章目录 前言&#xff1a;引入信号生活中的例子信号概念见一见Linux中的信号 浅度理解信号信号处理&#xff08;浅谈&#xff09;:如何自定义捕捉 信号保存&#xff08;浅谈&#xff09; 信号产生系统调用产生异常产生&#xff1a;浅谈除0异常浅谈解引用野指针异常Core &&…...

安全见闻-web安全

web安全 一、web程序简介 1. Web程序的基本构成 2. 工作流程 3. 安全性 二、JavaScript代码库 1. 代码库的概念和用途 2. 常见的代码库 三、框架 1. 常见的前端框架 2. 常见的后端框架 四、数据库 1. 数据库的分类 2. 数据库的潜在漏洞 3. 学习数据库的重要性 五、…...

华为手机卸载系统应用的方法

摘要&#xff1a; 1.手机环境&#xff1a;手机需要开启开发者模式并使用usb连接电脑&#xff0c;并选择文件传输模式 2.电脑环境&#xff1a;使用鸿蒙工具箱进行傻瓜操作或安装adb工具进行命令卸载 3.鸿蒙工具箱和adb工具本质都是使用adb shell pm uninstall -k --user 0 xx…...

力扣算法笔记——生成随机数组

题目信息: 给两个随机数和N&#xff0c;生成M到N的随机不重复数组&#xff0c;且M<N。 示例&#xff1a;输入M 2, N5, 输出 [4,3,2,5]. 思路&#xff1a;洗牌算法&#xff0c;先遍历M到N之间所有的数字&#xff0c;将得到的结果存入一个集合中&#xff0c;将集合从后往前遍历…...

Anaconda和Pycharm超详细安装教程(2024版本+Win11)

详细安装&#xff1a;https://download.csdn.net/download/qq_40379132/89924782 一、安装Anaconda 1.1 下载Anaconda 在官方网站&#xff08;Free Download | Anaconda&#xff09;上下载适用于你的操作系统的 Anaconda 安装包。&#xff08;这里以windows为例&#xff09;…...

代码随想录:从中后/中前遍历序列构造二叉树

106. 从中序与后序遍历序列构造二叉树 用分治思想&#xff0c;后序遍历是左右中&#xff0c;中序遍历是左中右&#xff0c;后序遍历的最后一个元素就是根节点&#xff0c; 在中序遍历中找到它的位置&#xff0c;它前面的为左子树&#xff0c;后面的为右子树&#xff0c;并能计…...

2-134 基于matlab的图像边缘检测

基于matlab的图像边缘检测&#xff0c;采用六种算子(分别是gabor、拉普拉斯、priwitt、robert、sobel、wallis微分算子&#xff09;&#xff0c;对图象进行边缘检测比较&#xff0c;输出边缘检测结果。可对比效果优劣。程序已调通&#xff0c;可直接运行。 下载源程序请点链接…...

【Java并发编程】线程池详解

一、简介 随着计算机行业的飞速发展&#xff0c;摩尔定律逐渐失效&#xff0c;多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池&#xff1a;ThreadPoolExecutor 类&#xff0c;帮助开发人员管理线程并方便地执行并行任务。了…...

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中的一个组件&#xff0c;它允许用户使用任何支持Java Scripting API (JSR 223) 的脚本语言来执行预处理任务。这个功能非常强大&#xff0c;因为它让测试人员能够利用如Groovy、JavaScript&#xff08;Nashorn引擎&#xff09;、BeanShell…...

通过js控制css变量

在JavaScript中&#xff0c;你可以通过操作CSS变量&#xff08;也称为自定义属性&#xff09;来动态改变样式。CSS变量在CSS中使用 – 前缀定义&#xff0c;例如 --main-color: red;。在JavaScript中&#xff0c;你可以使用 document.documentElement.style.setProperty 方法来…...

Docker:容器化和虚拟化

虚拟化 虚拟化是一种资源管理技术&#xff0c;它将计算机的各种实体资源&#xff08;如CPU、内存、磁盘空间、网络适配器等&#xff09;予以抽象、转换后呈现出来&#xff0c;并可供分割、组合为一个或多个电脑配置环境。这些资源的新虚拟部分是不受现有资源的架设方式、地域或…...

OpenSSL

OpenSSL 概述 OpenSSL 是一个开源的、安全传输协议实现工具&#xff0c;广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中&#xff0c;OpenSSL 被用于构建和维护 SSL/TLS 通信&#xff0c;确保数据在传输过程中的机密性和完整性。 简单来…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...