7

我是 spark 新手,我正在尝试根据 csv 文件的某些字段创建 distinct().count() 。

CSV结构(无标题):

id,country,type
01,AU,s1
02,AU,s2
03,GR,s2
03,GR,s2

加载 .csv 我输入:

lines = sc.textFile("test.txt")

lines然后按预期返回 3的不同计数:

lines.distinct().count()

但我不知道如何根据 let say idand进行不同的计数country

4

2 回答 2

8

在这种情况下,您将选择要考虑的列,然后计算:

sc.textFile("test.txt")\
  .map(lambda line: (line.split(',')[0], line.split(',')[1]))\
  .distinct()\
  .count()

这是为了清楚起见,您可以优化 lambda 以避免调用line.split两次。

于 2015-01-16T15:39:35.377 回答
2

分割线可以优化如下:

sc.textFile("test.txt").map(lambda line: line.split(",")[:-1]).distinct().count()
于 2015-05-11T16:32:31.710 回答