如何将一列临时存储为json对象以派生其他列?

永远困惑

我有一个像这样的键值对的数据集

likes=dogs;hates=birds;likes=sports;eats=cheese

然后我把它变成json

{"likes": ["dogs","sports"], "hates": ["birds"], "eats": ["cheese"]}

有没有一种方法可以保留此json数据结构而不将其转换为字符串,因此可以逐行从中派生更多列?我希望它看起来像这样,而不必在添加的每列中都从字符串中解码json。

        Dataset<Row> df1 = df.withColumn("interests", callUDF("to_json", col("interests")))
                         .withColumn("likes", callUDF("extract_from_json", "likes", col("interests")))
                         .withColumn("hates", callUDF("extract_from_json", "hates", col("interests")))
                         .withColumn("hates", callUDF("extract_from_json", "eats", col("interests")));
耻辱

如果您正在处理原始文件

likes=dogs;hates=birds;likes=sports;eats=cheese

那么您可以使用sc.textFile读取它,然后执行一些简单的RDD操作。

val df = sc.textFile(file)
  .flatMap(x => x.split(";"))
  .map(x => (x.split("=")(0), x.split("=")(1)))
  .toDF("interest","value")

df.withColumn("tmp",lit(1)).groupBy("tmp").pivot("interest").agg(collect_list("value"))

+---+--------+-------+--------------+
|tmp|    eats|  hates|         likes|
+---+--------+-------+--------------+
|  1|[cheese]|[birds]|[dogs, sports]|
+---+--------+-------+--------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将数据按一列拆分,并使用其他信息构成列?

如何将一列的值与其他列的多个值进行比较?

如何将一列和表的所有其他行的总和相加

如何将一列的值转换为列标题,而其他列的值转换为行?

如何将第一列的值附加到pandas数据框中的所有其他列

如何将一列添加到表中,该表结合了其他列的字符串?

如何将一列拆分为两列,以便使用 SQL 根据其他列维护数据

如何将包含对象的数组插入一列

如何将一列中的行值与组中另一列中的所有其他行进行比较?

如何将一列单元格值与数据帧python的所有其他行组合

如何将其他列中的字符收集到一列中?

如何根据其他列的匹配值将值从一列移动到另一列

如何将一列分隔为多列(复杂列)

如何将一列与其内容一样宽,同时用省略号将其他列截断?

SQL将其他表链接为一列

如何根据其他列查找一列的区别

实体框架-如何将列设置为与另一列相关的唯一

如果熊猫中没有其他唯一列,如何将多列转换为单独的行/值?

如何将另一列添加到我的数据框中,这是我的其他列“标签”的计数

Postgres如何将json数组解压缩为一列然后重新打包,但保留数据类型?

如何将所有dataframe列连接为一列?

如何将两列 Pandas Dataframe 移动和堆叠为一列?

如何将一列的值显示为单独的列

如何将第二列的高度调整为第一列的高度?

如何将Pandas行压缩为一列,对列采用不同的条件

如何将一列中的数据分组为保持行的多列

如何通过字典为DataFrame中的每一行设置基于其他列的唯一列ID

如何将唯一的重复列折叠为 R 中的唯一列?

如何将其他列中的最大值放入另一列 - oracle sql