PySpark中提取itineraries.element与validatingAirlineCodes字段并生成JSON
解决PySpark提取指定字段并生成JSON的问题
你遇到的问题核心是混淆了DataFrame结构描述里的element标识——它是用来说明数组类型字段的元素类型,而非实际的字段名。针对你的需求,正确的操作如下:
1. 直接选择目标字段
itineraries本身就是array类型字段,其每个元素对应结构描述里的map类型(即标注的element);validatingAirlineCodes是array
# 筛选出需要的两个字段 selected_df = df.select("itineraries", "validatingAirlineCodes")
2. 生成JSON输出
方式一:写入JSON文件
将筛选后的DataFrame写入指定路径的JSON文件(支持覆盖已有文件):
selected_df.write.mode("overwrite").json("/your/target/output/path")
方式二:获取JSON字符串列表
如果需要在内存中获取每条数据的JSON字符串:
json_result = selected_df.toJSON().collect()
可选:展开itineraries数组
如果需要将itineraries数组中的每个map元素单独拆分为一行,可以使用explode函数:
from pyspark.sql.functions import explode # 展开数组,将每个map元素命名为itinerary_element exploded_df = df.select(explode("itineraries").alias("itinerary_element"), "validatingAirlineCodes") # 生成JSON exploded_df.write.mode("overwrite").json("/your/exploded/output/path")
内容的提问来源于stack exchange,提问作者Haris Ampas
相关产品推荐
相关产品推荐

