PySpark - 如何使用特定字段输出JSON?

时间:2016-09-08 09:05:37

标签: python json apache-spark pyspark

JSON格式如下:

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

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

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

如何仅输出nameaddress.street

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

1 个答案:

答案 0 :(得分: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)

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