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