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

PySpark 使用pyarrow指定版本

背景说明

在 PySpark 3.1.3 环境中,当需要使用与集群环境不同版本的 PyArrow (如 1.0.0 版本)时,可以通过以下方法实现,而无需更改集群环境配置

完整操作说明

  1. 去pyarrow·PyPI下载对应版本的whl文件
  2. 后缀whl直接改成zip
  3. 解压后有两个文件夹,分别是pyarrow和pyarrow-1.0.0.dist-info
  4. 直接把那两个文件夹打包成pyarrow.zip

因为pyarrow里不是单纯的python代码,还有C扩展,所以不能用--py-files 参数,只能放在--archives参数里

spark -submit spark-submit \--master yarn \--deploy-mode cluster \  --executor-memory 4G \--num-executors 10 \--archives /my_path/pyarrow-1.0.0.zip#pyarrow  #必须添加的参数your_script.py
  • #pyarrow 表示在容器内解压到 ./pyarrow 目录

pyspark里要添加对应代码

from pyspark.sql import SparkSession
import pyspark.sql.functions as F
from pyspark.sql.functions import pandas_udf
import pyspark.sql.types as T
import pandas as pd
import os, sys# 初始化Spark并配置Arrow支持
spark = SparkSession.builder.config("spark.sql.execution.arrow.pyspark.enabled", "true").getOrCreate()# 加载自定义PyArrow
**pyarrow_dir = os.path.join(os.getcwd(), "pyarrow") # 对应 --archives 中的解压目录
sys.path.insert(0, pyarrow_dir)  # 添加到 Python 路径**import pyarrow
print("pyarrow version ", pyarrow.__version__) # 应显示 1.0.0# 定义大写转换UDF
@pandas_udf(T.StringType())
def uppercase(s: pd.Series) -> pd.Series:return s.str.upper()# 数据读取和处理
df = spark.read.load("my_path_tofile/*").select("version")
df.withColumn("hh", uppercase(F.col("version"))).show()
http://www.xdnf.cn/news/14088.html

相关文章:

  • cesium入门
  • 剖析电商搜索要点并基于Es+Redis模拟电商搜索行为
  • Flink task、Operator 和 UDF 之间的关系
  • 【系统分析师】2009年真题:案例分析-答案及详解
  • HQL 优化:从低效到高效的蜕变之旅
  • Python 函数
  • UE5反射系统分析(一)generated.h
  • 日本生活:日语语言学校-日语作文-沟通无国界(1)-题目:假装写日记
  • 【精选】计算机毕业设计SpringBoot车辆保险理赔平台 保险登记 出险申报 理赔审核进度管理系统源码+论文+PPT+讲解
  • 拆解 CMS/G1/ZGC 三种垃圾回收器算法过程
  • 228永磁同步电机无速度算法--基于双重锁相环的滑模观测器
  • 【FineDance】ModuleNotFoundError: No module named ‘pytorch3d‘
  • 时间序列数据库技术深度解析:核心原理与最佳实践
  • Windows安装部署jenkins
  • YOLOv8分类的三种C++实现:opencv dnn/libtorch/onnxruntime
  • 【编译原理】第九章 运行时存储
  • 2025-06-14【视觉】批量筛选图集中包含某种物体对象的方法
  • Spring Framework 执行链路设计
  • PC 基准测试工具 3D Mark 登陆 macOS
  • Boost dlib opencv vs2022 C++ 源码安装集成配置
  • Missing Semester计算机教育中缺失的一课:Vim
  • 端到端记忆网络 vs 神经图灵机:外部记忆的两种哲学之争
  • 腾讯云配置了国内镜像依然docker search失败
  • Vue3 + JavaScript 父组件点击按钮触发子组件事件方法
  • pytorch2.6安装
  • 编程之礼乐
  • Karate UI测试之驱动配置
  • 嵌入式学习笔记C语言阶段--14可变长数组
  • HTTP 缓存策略:强缓存与协商缓存的深入解析
  • Docker 部署 PostgreSQL 指南