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
相关产品推荐
相关产品推荐

