pyspark.errors.exceptions.base.PySparkTypeError:[CANNOT_INFER_SCHEMA_FOR_TYPE]无法推断类型的架构:`DoubleScalar`

问题描述 投票:0回答:1

尝试编写一个 Python 程序,使用

pyarrow.array
和指定类型
pyarrow.float64()
创建 PySpark DataFrame。

但是,我收到以下错误:

pyspark.errors.exceptions.base.PySparkTypeError:[CANNOT_INFER_SCHEMA_FOR_TYPE]无法推断类型的架构:

DoubleScalar

最小代码如下

import pyarrow
import pyspark

session = pyspark.sql.SparkSession.builder \
                              .appName ("pyspark_pyarrow") \
                              .config ("spark.executor.memory", "2g") \
                              .config ("spark.sql.shuffle.partitions", "2") \
                              .config ("spark.driver.host", "localhost") \
                              .config ("spark.sql.execution.arrow.pyspark.enabled", "true") \
                              .getOrCreate()

session.sparkContext.setLogLevel ("DEBUG")

array = pyarrow.array([1, 2, 3, 4, 5, 6, 7, 8, 9], type=pyarrow.float64())

df = session.createDataFrame (array)

session.stop ()

基本上,我想在代码中的任何地方使用“float64”。

如何解决此问题,同时继续使用 pyarrow 数据类型创建 PySpark DataFrame?

python pyspark pyarrow
1个回答
0
投票

您无法直接提供 pyarrow 数据结构。您需要首先将其转换为 pandas Dataframe,然后将其传递给 pyspark Dataframe 构造函数。

pandas_series = array.to_pandas()
pandas_df = pd.DataFrame({'values': pandas_series})
df = session.createDataFrame(pandas_df)
df.show()
© www.soinside.com 2019 - 2024. All rights reserved.