-1

我需要在两个文件中找到相同的单词。我使用火花,Java。

任务:对于两个文本文件,计算在第一个和第二个文件中同时出现的单词数。结果以键值对的形式保存到文件中,其中 key 是常用单词的数量,value 是单词本身。

问题:如何正确地做到这一点?我首先使用 wordcount 在第一个文件中找到单词和该单词的出现次数,与第二个文件类似。如何将它们结合起来,只留下第一个和第二个之间的共同点?

我加入他们,我得到了这个:(测试,(1,1))(火花,(1,2))

我需要至少获得两个值,即 (test,1) (spark,1)

如何正确执行?

我的编辑代码

4

2 回答 2

0

如果您在两个数据框中有 (word,count)df1并且df2您可以使用内部联接。默认情况下,火花连接是内部等值连接,例如

df1.join(df2, Seq("word"))

可以解决问题(这取决于您如何从 df1 和 df2 命名单词/计数,您可能需要重命名某些列)。

于 2018-12-03T22:15:25.347 回答
0

这是 scala,但应该足够简单以转换为 java:

val f1 = spark.sparkContext.textFile("file1")
val w1 = f1.flatMap(_.split(" ")).toDF().distinct()
val f2 = spark.sparkContext.textFile("file2")
val w2 = f2.flatMap(_.split(" ")).toDF().distinct()
val result = w1.join(w2,w1("value")===w2("value"))
于 2018-12-03T22:25:11.757 回答