PySpark distinct ().count() в csv-файле

Я новичок в spark, и я пытаюсь сделать distinct().count () на основе некоторых полей csv-файла.

структура Csv (без заголовка):

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

загрузить .КШМ я набрал:

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

тогда отчетливо рассчитывать на lines вернулся 3, как и ожидалось:

lines.distinct().count()

но я понятия не имею, как сделать отдельный счет на основе давайте скажем id и country.

2 ответов


в этом случае вы должны выбрать столбцы, которые хотите рассмотреть, а затем подсчитать:

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

Это для ясности, вы можете оптимизировать лямбда, чтобы избежать вызова line.split два раза.


линия разделения может быть оптимизирована следующим образом:

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