You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1苹果芯片上PySpark Pandas UDF无法运行问题求助

PySpark Pandas UDF架构不兼容问题解决

问题描述

在arm64架构设备上使用PySpark Pandas UDF时,触发numpy C扩展导入失败错误,提示架构不兼容(当前为arm64,需要x86_64),卸载并重新安装numpy、PySpark后问题仍存在。操作流程如下:

  1. 执行pip install pyspark安装PySpark
  2. 初始化Spark:
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
  1. 创建DataFrame:
from datetime import date, datetime

rdd = spark.sparkContext.parallelize([
    (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
    (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)),
    (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
])
df = spark.createDataFrame(rdd, schema=['a', 'b', 'c', 'd', 'e'])
  1. 定义并调用Pandas UDF:
import pandas as pd
from pyspark.sql.functions import pandas_udf

@pandas_udf('long')
def pandas_plus_one(series: pd.Series) -> pd.Series:
    return series + 1

df.select(pandas_plus_one(df.a)).show()

解决方案

方案1:通过Rosetta 2以x86_64架构运行终端(适用于Mac M系列芯片)

  • 找到「终端」应用,右键选择「显示简介」
  • 勾选「使用Rosetta打开」,重启终端
  • 卸载现有numpy:pip uninstall -y numpy
  • 重新安装适配x86_64的numpy:pip install numpy
  • 重新运行PySpark代码

方案2:安装适配ARM64的numpy版本

  • 卸载现有numpy:pip uninstall -y numpy
  • 若使用conda环境,执行conda install numpy(conda会自动匹配架构安装对应版本)
  • 若使用pip,执行pip install --no-binary :all: numpy,强制编译适配arm64的numpy版本

方案3:指定Spark使用适配架构的Python环境

在初始化Spark前添加环境变量,确保PySpark调用的Python环境中numpy是当前架构适配版本:

import os
# 替换为你的Python路径,需确认该路径下的numpy为arm64版本
os.environ['PYSPARK_PYTHON'] = '/usr/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/usr/bin/python3'

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

内容的提问来源于stack exchange,提问作者Jason Rich Darmawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:35:28