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()
但我不知道如何根据 id
和 country
进行不同的计数。
在这种情况下,您将 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()
我是 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()
但我不知道如何根据 id
和 country
进行不同的计数。
在这种情况下,您将 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()