当前位置: 首页 > 后端技术 > Python

大数据:并行计算简介-使用PySpark

时间:2023-03-26 00:26:12 Python

Spark应用程序作为独立的进程集运行,由驱动程序中的Spark上下文协调。它可以自动创建(例如,如果您从shell调用pyspark(然后调用Spark上下文sc)。但是我们还没有构建它,因此需要定义它:frompysparkimportSparkContextsc=SparkContext('local[2]','Spark101')如果要使用所有可用资源,也可以使用:sc=SparkContext('local[*]','Spark101')创建后,首先处理一个简单的并行计算从摄氏度到华氏度的温度转换temp_c=[10,3,-5,25,1,9,29,-10,5]rdd_temp_c=sc.parallelize(temp_c)rdd_temp_K=rdd_temp_c.map(lambdax:x+273.15).collect()print(rdd_temp_K)results[283.15,276.15,268.15,298.15,274.15,282.15,302.15,263.15,278.15]使用sc.parallelize处理并行计算的摄氏温度,然后使用map进行一对一的映射,除了map映射之外,还有常用的reduce函数,比如numbers=[1,4,6,2,9,10]rdd_numbers=sc.parallelize(数字s)#使用reduce合并数字rdd_reduce=rdd_numbers.reduce(lambdax,y:"("+str(x)+","+str(y)+"]")#rdd_reduce=rdd_numbers.reduce(lambdax,y:"("+str(x)+str(y))print(rdd_reduce)result(((1,(4,6]],2],(9,10]]通常我们使用PySpark部署机器学习项目,PySpark中有多种数据处理方式。首先我们创建一个会话(Session)frompyspark.sqlimportSparkSessionsession=SparkSession.builder.appName('data_processing').getOrCreate()读入数据集df=session.read.csv('iris.csv',inferSchema=True,header=True)df.show()df.printSchema()结果根|--sepal_length:double(nullable=true)|--sepal_width:double(nullable=true)|--petal_length:double(nullable=true)|--petal_width:double(nullable=true)|--species:string(nullable=true)也可以选择指定列输出df.select('sepal_width','petal_width').show(3)结果+-----------+------------+|sepal_width|petal_width|+------------+------------+|3.5|0.2||3.0|0.2||3.2|0.2|+------------+------------+仅显示前3行创建新列df.withColumn("new_col_name",(df["sepal_width"]*10)).show(6)过滤特征df.filter(df["species"]=="setosa").show(9)df.filter((df["species"]=="setosa")|(df["sepal_width"]<3.0)).show(9)查看列的不同值df.select("species")。清楚的()。show()按列计数df.groupBy('petal_length').count().show()按列统计排序df.groupBy('petal_length').count().orderBy("count",ascending=False).show()按列聚合df.groupBy('species').agg({'sepal_length':'sum'}).show()以上只是简单的数据处理部分。PySpark还有许多其他吸引人的特性。来源网络仅供学习使用。如有侵权,请联系删除。我的公众号【Python圈】汇集了优质的技术文章和经验总结。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,600+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕学不会!