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

在Spark[复制]中将Json和整数的列拆分为Dataframe

王旺
2023-03-14

我有以下格式的数据帧:


id     types
---   -------
1     {"BMW":"10000","Skoda":"12345"}
2     {"Honda":"90000","BMW":"11000","Benz":"56000"}

我需要创建一个新的数据帧,如下所示:

id   types     value
--- ------   -------
1    BMW      10000
1    Skoda    12345
2    Honda    90000
2    BMW      11000
2    Benz     56000

共有1个答案

苏鹏鹍
2023-03-14

将来自_json的与MapType一起使用,并分解数组。

示例代码

import org.apache.spark.sql.types._
import org.apache.spark.sql.functions._
df.withColumn("jsn", from_json(col("types"),MapType(StringType(),StringType()))).
select("id",explode("jsn")).
show()
//+---+-----+-----+
//| id|  key|value|
//+---+-----+-----+
//|  1|  BMW|10000|
//|  1|Skoda|12345|
//|  2|Honda|90000|
//|  2|  BMW|11000|
//|  2| Benz|56000|
//+---+-----+-----+

 类似资料:
  • 问题内容: 我的问题是我有一个这样的表: c1 | c2 | c3 | c4是一个由|分隔的值。 我的最终结果应如下所示: 我该怎么做呢? 谢谢 问题答案: 这就是您可以执行的操作,使用管道将字符串拆分并使用spark函数爆炸数据 输出: 希望这可以帮助!

  • 我有一个包含(我认为是)对的数据帧。 它看起来像这样: < code>Col2曾经包含一个< code>Map[String,String],我在上面做了一个< code>toList(),然后做了< code>explode()以获得原始Map中每个映射的一行。 我想将< code>Col2分成2列,并获得以下数据帧: 有谁知道如何做到这一点? 或者,有人知道如何将一个映射分解成多行(每个映射一

  • 将一个整数,分拆为若干整数的和。例如实现: 4=3+1 4=2+2 4=2+1+1 4=1+1+1+1 解决(Python) #! /usr/bin/env python #encoding:utf-8 """ """ def int_divided(m,r,out_list): if(r==0): return True tm=r while tm>0:

  • 感兴趣的是在同一pyspark数据帧中将列表的这一列拆分为多列的scala-spark实现 给定该数据帧: 我想要一个新的数据帧,它包含分解值并映射到我提供的列名称: 尝试: 但它的格式错误,我不知道如何映射到我的 colNames 列表: 在上面的链接中,python的解决方案是使用列表理解: 但它没有显示如何使用提供的列名列表,因为列名只是列的索引。

  • 理想情况下,我希望这些新列也被命名。

  • 我有一个Pandas DataFrame列,其中包含一个列表中的多个列表。类似于这样: 我想将列表拆分为多列,因此输出应该是这样的: 请帮我做这件事。预先感谢