【发布时间】:2020-05-14 08:16:09
【问题描述】:
我在一个包含 JSON 序列的 CSV 文件中有一个字段。有关模拟数据,请参见下文。 from_json 仅识别 1 个项目的序列。有人可以提供有关将字符串字段转换为序列的 Spark/Scala 惯用方式的指导吗?我相信一旦我有了一个序列,我就可以炸开这个字段并使用 from_json 函数。
|MainId|genres |
+------+-----------------------------------------------------------------------------------------------------------------------------+
|862 |[{'id': 16, 'name': 'Animation'}, {'id': 35, 'name': 'Comedy'}, {'id': 10751, 'name': 'Family'}] |
|8844 |[{'id': 12, 'name': 'Adventure'}, {'id': 14, 'name': 'Fantasy'}, {'id': 10751, 'name': 'Family'}] |
|15602 |[{'id': 10749, 'name': 'Romance'}, {'id': 35, 'name': 'Comedy'}] |
|31357 |[{'id': 35, 'name': 'Comedy'}, {'id': 18, 'name': 'Drama'}, {'id': 10749, 'name': 'Romance'}] |
|11862 |[{'id': 35, 'name': 'Comedy'}]
【问题讨论】:
-
可以使用spark将本列读取为json: val jsonDF = spark.read.json(df("genres")) 如果需要MainId,可以先使用monotonically_increasing_id再加入你的数据框
-
不幸的是,构造不起作用。如果有帮助,我正在使用 Spark 2.4。
-
能否分享
df的架构? -
这是输入数据框的架构
-
```成人:布尔值belongs_to_collection:字符串预算:整数类型:字符串主页:字符串MainId:字符串imdb_id:字符串original_language:字符串original_title:字符串概述:字符串流行度:双poster_path:字符串production_companies:字符串生产国家:字符串发布日期:日期收入:整数运行时间:双语语言:字符串状态:字符串标语:字符串标题:字符串视频:布尔投票平均:双投票计数:整数```
标签: json scala csv apache-spark sequence