spark dropDuplicates基于json数组字段

时间:2017-06-12 17:51:28

标签: scala apache-spark databricks

我有以下结构的json文件:

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

我想阅读几个这样的json文件,并根据" name"来区分它们。列内的名字。 我试过了

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

但它没有做到这一点。

2 个答案:

答案 0 :(得分:1)

这似乎是火花2.0中添加的回归。如果将嵌套列置于最高级别,则可以删除重复项。如果我们根据您要进行重复数据删除的列创建新列。然后我们放下柱子,最后放下柱子。以下功能也适用于复合键。

if test -d apache2 && if test -d www2

答案 1 :(得分:0)

仅供将来参考,解决方案看起来像

      val uniqueNams = allNames.withColumn("DEDUP_NAME_KEY", 
org.apache.spark.sql.functions.explode(new Column("names.name")))
.cache()
.dropDuplicates(Array("DEDUP_NAME_KEY"))
.drop("DEDUP_NAME_KEY")