【发布时间】:2016-09-21 07:13:40
【问题描述】:
我已在网上和此处搜索过,但无法找到解决我所面临问题的任何方法。
首先,我使用的是 PySpark。我有数据作为 DataFrame,我想写成镶木地板。架构由以下内容决定:
df_schema = StructType([StructField('p_id', StringType(), True),
StructField('c_id_map', MapType(StringType(), StringType(), True), True),
StructField('d_id', LongType(), True)])
我的数据确实有这些列,c_id_map 是一个 Python 字典,它的键是“e_id”或“r_id”,值是字符串(某个标识符)。
我使用以下方式编写数据:
df = sqlContext.createDataFrame(hour_filtered_rdd, df_schema)
dfwriter = df.write
dfwriter.mode('overwrite')
dfwriter.format('parquet')
dfwriter.parquet(output_path)
parquet 文件已写出,但是当我使用 parquet-tools 查看内容时,我发现 c_id_map 始终为空(即 cat 命令没有打印任何内容),例如:
c_id_map:
我认为数据在写入之前就存在于字典中。所有其他数据类型(字符串和长整型)都正确写出。作为一种解决方法,我将地图数据存储为 JSON 字符串,但我想了解发生了什么问题。
对此有什么想法吗?还是 parquet-tools 无法显示地图数据的问题?
【问题讨论】:
标签: python dictionary dataframe pyspark parquet