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

基于json数组字段的spark dropDuplicates

耿永寿
2023-03-14

我有以下结构的json文件:

{"names":[{"name":"John","lastName":"Doe"},
{"name":"John","lastName":"Marcus"},
{"name":"David","lastName":"Luis"}
]}

我想读取几个这样的json文件,并根据names中的“name”列区分它们。我试过了

df.dropDuplicates(Array("names.name")) 

但它没有起到魔法作用。

共有1个答案

赵宏达
2023-03-14

这似乎是在Spark2.0中添加的回归。如果将嵌套列提升到最高级别,则可以删除重复项。如果我们基于要删除的列创建一个新列。然后我们删除列,最后删除列。下面的函数也适用于复合键。

val columns = Seq("names.name")
df.withColumn("DEDUP_KEY", concat_ws(",", columns:_*))
  .dropDuplicates("DEDUP_KEY")
  .drop("DEDUP_KEY")
 类似资料:
  • 这看起来很容易,但却不知道该怎么做。当前数组数据是按日期和日期列出的,因此我需要将所有日期组合起来:天、月、6个月、1年。我需要将数组数据排列为下面的第二个数组。

  • 我开始使用验证框架用jax-rs验证json请求 是否可以根据另一个字段验证一个字段? 提前致谢

  • 问题:有时访问请求目标是单个目标,有时是数组 问题:如何根据找到的内容将Jackson反序列化为单个目标或数组? 单目标JSON 目标JSON数组 “目标”POJO: })@生成(“jsonSchema2pojo”)公共类目标实现可序列化{ }

  • 我尝试使用函数JSON\u array\u elements()卸载JSON数组,并尝试使用JSON\u array\u length(field\u name)计算数组的元素,但没有成功。我使用的是PostgreSQL 9.4.5。 我想查询元素“name”的结果,这是json类型数组field crew | json[]上保存的数据。

  • 我正在尝试用Angular 7建立一个动态研究。我正在用多个键从API中获取一个数组:[_id= 我用ngFor显示我所有的结果,我已经用我找到的教程创建了一个过滤管道… 这是我的研究部分: 这是我的过滤管功能: 但是这只会过滤这样的数组:[

  • 我使用Java、Spring boot、Hibernate堆栈和协议缓冲区作为微服务之间通信的DTO。在反向代理中,我使用protobuf的java支持将protobuf对象转换为json。 我有以下结构 将MultipleItems DTO转换为json会得到以下结果: 在生成的json中,我得到了映射到json数组的键。 我想删除密钥并只返回json数组作为结果。有没有一个干净的方法来实现这一