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

Spark转pandas时启用Arrow与否导致np.nan转换差异的疑问

Pandas空值转Spark DataFrame时Arrow启用与否的行为差异疑问

发现将pandas中的空值(np.nan)转换为Spark DataFrame时,转换结果会因是否启用Arrow而有所不同。想了解这种行为是否是有意设计的?如果是,相关内容是否应该有文档说明?

复现示例

默认未启用Arrow的情况

import numpy as np
import pandas as pd 
from pyspark.sql import SparkSession 

spark = SparkSession.builder.getOrCreate()

df_pd = pd.DataFrame(
    {
        "foo": [1, None],
        "bar": [2, np.nan],
    }
)

df = spark.createDataFrame(df_pd)
df.show()

输出结果:

+------+----+
|   foo| bar|
+------+----+
|   1.0| 2.0|
|   NaN| NaN|
+------+----+

启用Arrow的情况

先配置SparkSession启用Arrow:

spark = SparkSession.builder.config(
    "spark.sql.execution.arrow.pyspark.enabled", "true"
).getOrCreate() 

执行相同的转换后,输出结果:

+-----+----+
|  foo| bar|
+-----+----+
|  1.0| 2.0|
| null|null|
+-----+----+

测试环境

  • Java: openjdk-17-jre-headless
  • Spark: 3.4.1
  • pandas: 1.5.3
  • pyarrow: 11.0.0

内容的提问来源于stack exchange,提问作者Matthias Roels

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:02:38