pySpark读写CSV文件、查重并写入CSV文件中

来源:互联网 发布:韩国语打字软件 编辑:程序博客网 时间:2024/06/05 11:30
前段时间在研究 pySpark 数据处理,深刻地感受到spark的极大魅力。自己是一个初学者,这篇博客也只是简单的完成了几个简单的工作任务,哈哈@@

不说了上代码:

from pyspark import SparkConf,SparkContextimport csvfrom _operator import addimport re#!/usr/bin/python# -*- coding: UTF-8 -*-conf = SparkConf().setAppName("Simple").setMaster("local")sc = SparkContext(conf = conf)file1 = open("D:\\lbossdata.CSV","r")f1 = csv.reader(file1)  //打开csv文件将文件的第一行的第一列读入到row1row1 = [row[0] for row in f1] file1.close()with open("D:\\lbossdata.CSV","r") as file2: f2 = csv.reader(file2) row2 = [row[1] for row in f2] with open("D:\\lbossdata.CSV","r") as file3: f3 = csv.reader(file3) row3 = [row[2] for row in f3]


通第一个方法一样,将其余几行也分别读入到row2\row3,row4,row5,row6。

最先应将读出来的每一个row放入数据集中,将每一个RDD联结为一个RDD。

然后开始去重,调用distinct()方法,代码如下:

RDD1 = sc.parallelize(row1, 1)
RDD2 = sc.parallelize(row2, 1)
RDD3 = sc.parallelize(row3, 1)
RDD4 = sc.parallelize(row4, 1)
RDD5 = sc.parallelize(row5, 1)
RDD6 = sc.parallelize(row6, 1)
RDD = RDD1.zip(RDD2).zip(RDD3).zip(RDD4).zip(RDD5).zip(RDD6)
print(RDD.count())
RDD_1= RDD.distinct()
print(RDD_1.count())
RDD1_1 = RDD_1.map(lambda x:(x[0][0][0][0][0],x[0][0][0][0][1],x[0][0][0][1],x[0][0][1],x[0][1],x[1]))

最后一行是将每一个RDD中的数据使用逗号分隔开,以便存储到csv文件中去。

最后在本地创建一个csv文件,将上边的RDD1_1写入csv文件即可。

with open("D:\\z.CSV","w",newline="") as file_1:
     f_csv = csv.writer(file_1)
     f_csv.writerows(RDD1_1.collect())


这就是所有的代码,速度相当快。大概用时不到1秒。@@

第一次写博客,感觉还行,不知道代码怎么贴入,总是乱贴,还请大家包涵。




原创粉丝点击