【发布时间】:2017-06-03 11:28:10
【问题描述】:
我有一个换行分隔的 json 文件,看起来像
{"id":1,"nested_col": {"key1": "val1", "key2": "val2", "key3": ["arr1", "arr2"]}}
{"id":2,"nested_col": {"key1": "val1_2", "key2": "val2_2", "key3": ["arr1_2", "arr2"]}}
使用df = spark.read.json(path_to_file) 读取文件后,我最终会得到一个架构如下的数据框:
DataFrame[id: bigint,nested_col:struct<key1:string,key2:string,key3:array<string>>]
我想要做的是将nested_col 转换为一个字符串而不将primitivesAsString 设置为true(因为我实际上有100 多个列并且需要推断我所有其他列的类型)。我也不知道nested_col 看起来像什么。换句话说,我希望我的DataFrame 看起来像
DataFrame[id: bigint,nested_col:string]
我试过了
df.select(df['nested_col'].cast('string')).take(1)`
但它没有返回正确的 JSON 字符串表示:
[Row(nested_col=u'[0,2000000004,2800000004,3000000014,316c6176,326c6176,c00000002,3172726100000010,32727261]')]`
而我希望:
[Row(nested_col=u'{"key1": "val1", "key2": "val2", "key3": ["arr1", "arr2"]}')]
有谁知道我怎样才能得到想要的结果(也就是将嵌套的 JSON 字段/StructType 转换为字符串)?
【问题讨论】:
标签: json scala apache-spark dataframe apache-spark-sql