要从Python字典创建一个PySpark DataFrame,其中一列包含np.ndarray
(NumPy数组),你可以按照以下步骤操作:
以下是一个示例代码,展示如何从包含NumPy数组的Python字典创建PySpark DataFrame:
from pyspark.sql import SparkSession
import numpy as np
from pyspark.sql.types import ArrayType, IntegerType
# 初始化SparkSession
spark = SparkSession.builder.appName("example").getOrCreate()
# 创建一个包含NumPy数组的字典
data = {
'id': [1, 2, 3],
'values': [np.array([1, 2, 3]), np.array([4, 5, 6]), np.array([7, 8, 9])]
}
# 定义DataFrame的schema
schema = [
StructField('id', IntegerType(), True),
StructField('values', ArrayType(IntegerType()), True)
]
# 创建DataFrame
df = spark.createDataFrame(data, schema=schema)
# 显示DataFrame
df.show(truncate=False)
pyspark.sql.functions.udf
(用户自定义函数)来处理序列化问题。from pyspark.sql.functions import udf
from pyspark.sql.types import ArrayType, IntegerType
# 定义一个UDF来处理NumPy数组
def numpy_to_list(arr):
return arr.tolist()
numpy_to_list_udf = udf(numpy_to_list, ArrayType(IntegerType()))
# 使用UDF转换NumPy数组
df = df.withColumn('values', numpy_to_list_udf(df['values']))
通过以上步骤,你可以成功创建一个包含NumPy数组的PySpark DataFrame,并解决可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云