【问题标题】:PySpark - How to output JSON with specific fields?PySpark - 如何输出带有特定字段的 JSON?
【发布时间】:2016-09-08 09:05:37
【问题描述】:

JSON 格式如下:

{
  "name": "aaa",
  "address": {
    "street": "blv abc",
    "street_num": "122"
  }
}

我会从 parquet 文件中读取数据并对它们执行 sql 查询,例如查找所有住在街道 blv abc 的人。但我只想将nameaddress.street 输出为:

{
  "name": "aaa",
  "address": {
    "street": "blv abc"
  }
}

如何只输出nameaddress.street

DataFrameReader 架构可能对我不起作用,因为我需要在输出之前执行一些 SQL 查询,这可能需要在 street_num 上进行过滤。

【问题讨论】:

  • 您到底想做什么?将 JSON 转换为没有 street_num 的新 JSON?您能否提供您的代码,显示您尝试做什么?
  • record = sqlContext.read.parquet("file.json") sqlContext.registerDataFrameAsTable(record, "record") sqlContext.sql("select * from record where street == 'blv abc'")

标签: python json apache-spark pyspark


【解决方案1】:

我对这种不寻常的数据转换的最后手段是

from pyspark.sql.types import Row

def transform(row):
    d = row.asDict()  # now in python data types

    del d['address']['street_num']

    return Row(**d)

new = dataframe.rdd.map(transform)

我想你想删除很多字段以保持记录精简,否则它并不值得。

【讨论】:

  • 是的。我有一个很大的 json,只想在过滤后输出几个字段。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 2016-12-18
  • 2021-11-09
  • 2017-01-06
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多