PySpark distinct().count() 在 csv 文件上

PySpark distinct().count() on a csv file

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

Csv结构(无header):

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()

但我不知道如何根据 idcountry 进行不同的计数。

在这种情况下,您将 select 要考虑的列,然后计数:

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

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

分割线可以优化如下:

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