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

如何在pyspark DataFrame中爆炸地图类型?

苍德寿
2023-03-14

我有一个数据表

import os, sys
import json, time, random, string, requests
import pyodbc 
from pyspark import SparkConf, SparkContext, SQLContext
from pyspark.sql.functions import explode, col, from_json, lit
from pyspark.sql import functions as f
from pyspark.sql import SparkSession
from pyspark.sql.types import *
...
df = data.withColumn("dev_serial", col("data.dev_serial")) \
   .withColumn("dev_property", from_json(col("data.dev_property"), MapType(StringType(), StringType())) )\
   .drop("data")
df.show(truncate=False)
df.printSchema()

而这个结果就在这里

我想爆炸dev_property(列)

dev_serial / use_event / item / ...
value1 / value2 / value3 /value4
.
.
.

怎么爆炸?

共有1个答案

柳轶
2023-03-14

当您希望将dev_property列分解为两列时,此脚本将会很有帮助:

df2 = df.select(df.dev_serial, explode(df.dev_property))
df2.printSchema()
df2.show()

阅读更多关于爆炸如何在数组和映射类型上工作的信息。

 类似资料:
  • 问题内容: 我想从包含单词列表的DataFrame转换为每个单词都在其自己行中的DataFrame。 如何在DataFrame中的列上爆炸? 这是我尝试的一些示例,您可以在其中取消注释每个代码行并获取以下注释中列出的错误。我在带有Spark 1.6.1的Python 2.7中使用PySpark。 请指教 问题答案: 和是SQL函数。两者都在SQL上运行。将Java正则表达式作为第二个参数。如果要在

  • 问题内容: 我有这样的桌子 这样我就可以轻松执行查询 我得到 我想生成一个这样的表 请注意,我要显示爆炸行。另外,对于多个ID,可能会重复,因此我希望这些行反映出来。基本上,+ 应该是唯一的。 我该如何写查询?我试过了 但是我得到了 问题答案: 使用 侧面图 : 结果: 使用表而不是子查询。

  • 问题内容: 我一直非常依赖CSS来开发我正在工作的网站。现在,所有CSS样式都在每个标记的基础上应用,因此现在我尝试将其移至更多外部样式中,以帮助将来进行任何更改。 但是现在的问题是,我注意到我遇到了“ CSS爆炸”。对我来说,决定如何最好地组织和抽象CSS文件中的数据变得越来越困难。 我正在从大量基于表格的网站中使用网站中的大量标签。因此,我得到了许多如下所示的CSS选择器: 还算不错,但是作为

  • 问题内容: 我有一个包含JSON对象的表。每个JSON对象在方括号中均包含一个数组,并用逗号分隔。 如何使用SQL访问方括号数组中的任何元素,例如“ Matt”? 我在Hadoop上使用“ Hive”。如果您知道如何在SQL中执行此操作,那很好:) 问题答案: 您可以在Hive中执行以下操作: 首先,您需要一个JSON SerDe(Serializer / Deserializer)。我见过的最实

  • 问题内容: 我已经做过了,但是没有用。每当我访问它时,它都会转到。代码在这里给出: *我也添加了 *更新,但没有区别。另外,让我告诉您,我正在地址栏中输入地址,然后按Enter。我说的对吗?浏览器如何发现它不需要从服务器刷新? 更新#2 理想的情况是我想要的网址为和到。现在给出404 更新#3 我正在使用nginx代理,如果有帮助的话。 更新#4 擦除的缓存。现在我可以看到,而不是,但仍给404

  • 我的目标是分解(即,从结构内部获取它们,并将它们作为数据集的剩余列)一个Spark结构列(已经完成),但通过在任意字符串前面添加前缀来更改内部字段名。其中一个动机是,我的结构可以包含与它外部的列同名的列,因此,我需要一种容易区分它们的方法。当然,我事先不知道结构中的列是什么。 以下是我目前掌握的情况: 这做的工作好-我用这样写: 它返回原始数据帧中的所有列,以及末尾结构的内部列。 至于前置前缀,我