当前位置: 首页 > 知识库问答 >
问题:

从 CSV 文件中拆分 JSON 值,并根据火花/斯卡拉中的 json 键创建新列 [重复]

严曜文
2023-03-14

将数据放在下面的CSV文件中是格式。想要从 Desc 列中拆分 JSON,并使用键创建一个新列。将火花 2 与斯卡拉一起使用。

+------+------------+----------------------------------+
|  id  |  Category  |           Desc                   |
+------+------------+----------------------------------+
|  201 |  MIS20     | { "Total": 200,"Defective": 21 } |
+------+-----------------------------------------------+
|  202 |  MIS30     | { "Total": 740,"Defective": 58 } |
+------+-----------------------------------------------+

输出:

So the desired output would be:

+------+------------+---------+-------------+
|  id  |  Category  |  Total  |  Defective  |
+------+------------+---------+-------------+
|  201 |  MIS20     |  200    |   21        |
+------+----------------------+-------------+
|  202 |  MIS30     |  740    |   58        | 
+------+------------------------------------+

非常感谢任何帮助。

共有1个答案

孟翰海
2023-03-14

为您的内部< code>json创建一个< code >模式,并使用< code>from_json函数应用该模式,如下所示

val schema = new StructType()
  .add(StructField("Total", LongType, false)).
  add("Defective", LongType, false)

d.select($"id",$"Category", from_json($"Desc", schema).as("desc"))
  .select($"id",$"Category", $"desc.*")
  .show(false)

输出:

+---+--------+-----+---------+
|id |Category|Total|Defective|
+---+--------+-----+---------+
|201|MIS20   |200  |21       |
|202|MIS30   |740  |58       |
+---+--------+-----+---------+

希望这有帮助!

 类似资料:
  • 我尝试使用I forest https://github.com/titicaca/spark-iforest,的scala实现,但是当我构建时(就像README中报告的< code>mvn clean package),它给我这些错误: 有人知道为什么吗?谢谢 scala版本2.11.12 火花版本2.4.0 maven版本3.5.2 我修改了pom.xml,调整了scala、spark和mav

  • 如何将多个列对分解为多行? 我有一个包含以下内容的数据帧 我想要一个最终的数据帧,如下所示 我试着使用下面的代码,但是它返回了4条记录,而不是我想要的两条记录

  • 我有这个json 我想生成两个变量,比如 它们在和 我读过这篇文章,但它只适用于地图,但我的json是嵌套json。我怎样才能得到结果?

  • 问题内容: 我需要使用javascript根据键值合并两个json对象。 我有两个不同的变量g和c。 术语:所有值都需要合并。 我尝试了以下代码:但我合并在’c’变量中具有相同ID的内容。但是我需要合并比较“ g”和“ c”。 预期产量: 问题答案: 如果ID中不存在ID,您忘了推入第一个循环;如果ID中不存在该对象的一个​​或多个ID,您忘了循环遍历。

  • 问题内容: 我试图根据该行的单元格中的值将其分为两行。例如,我具有以下表结构(这是一个临时表,没有任何键,索引或任何其他内容,我可以在另一个临时表中选择拆分结果): 然后,应将其拆分为: 问题答案: 我将使用