PySpark实战:DataFrame去重处理

来自CloudWiki
跳转至: 导航搜索

介绍

数据集中,有可能存在重复的数据。

此时在查询时,根据需要有可能要进行去重处理。

代码


import findspark
findspark.init()
##############################################
from pyspark.sql import SparkSession
spark = SparkSession.builder \
        .master("local[1]") \
        .appName("RDD Demo") \
        .getOrCreate();
sc = spark.sparkContext
#############################################
a = [   ('01','张三', '男',32,5000),
        ('01','李四', '男',33,6000),
        ('01','王五', '女',38,5500),
        ('02','Jack', '男',42,7000),
        ('02','Smith', '女',27,6500),
        ('02','Lily', '女',45,9500),
        ('02','Lily', '女',45,9500)
]
rdd = sc.parallelize(a)
peopleDf = spark.createDataFrame(rdd,\
   "deptId:string,name:string,gender:string,age:int,salary:int")
#['deptId', 'name', 'gender', 'age', 'salary']
print(peopleDf.columns)
peopleDf.distinct().show()
# +------+-----+------+---+------+
# |deptId| name|gender|age|salary|
# +------+-----+------+---+------+
# |    01| 王五|    女| 38|  5500|
# |    02|Smith|    女| 27|  6500|
# |    01| 李四|    男| 33|  6000|
# |    02| Lily|    女| 45|  9500|
# |    02| Jack|    男| 42|  7000|
# |    01| 张三|    男| 32|  5000|
# +------+-----+------+---+------+
##############################################

输出

['deptId', 'name', 'gender', 'age', 'salary']
+------+-----+------+---+------+
|deptId| name|gender|age|salary|
+------+-----+------+---+------+
|    01| 王五|    女| 38|  5500|
|    02|Smith|    女| 27|  6500|
|    01| 李四|    男| 33|  6000|
|    02| Lily|    女| 45|  9500|
|    02| Jack|    男| 42|  7000|
|    01| 张三|    男| 32|  5000|