PyCharm搭建Spark开发环境实现第一个pyspark程序


Posted in Python onJune 13, 2019

一, PyCharm搭建Spark开发环境

Windows7, Java1.8.0_74, Scala 2.12.6, Spark 2.2.1, Hadoop2.7.6

通常情况下,Spark开发是基于Linux集群的,但这里作为初学者并且囊中羞涩,还是在windows环境下先学习吧。

参照这个配置本地的Spark环境。

之后就是配置PyCharm用来开发Spark。本人在这里浪费了不少时间,因为百度出来的无非就以下两种方式:

1.在程序中设置环境变量

import os
import sys

os.environ['SPARK_HOME'] = 'C:\xxx\spark-2.2.1-bin-hadoop2.7'
sys.path.append('C:\xxx\spark-2.2.1-bin-hadoop2.7\python')

2.在Edit Configuration中添加环境变量

PyCharm搭建Spark开发环境实现第一个pyspark程序

PyCharm搭建Spark开发环境实现第一个pyspark程序

不过还是没有解决程序中代码自动补全。

想了半天,观察到spark提供的pyspark很像单独的安装包,应该可以考虑将pyspark包放到python的安装目录下,这样也就自动添加到之前所设置的pythonpath里了,应该就能实现pyspark的代码补全提示。

将spark下的pyspark包放到python路径下(注意,不是spark下的python!)

PyCharm搭建Spark开发环境实现第一个pyspark程序

PyCharm搭建Spark开发环境实现第一个pyspark程序

最后,实现了pyspark代码补全功能。

PyCharm搭建Spark开发环境实现第一个pyspark程序

二.第一个pyspark程序

作为小白,只能先简单用下python+pyspark了。

数据:Air Quality in Madrid (2001-2018)

需求:根据历史数据统计出每个月平均指标值

import os
import re
from pyspark.sql import SparkSession

if __name__ == "__main__":

 spark = SparkSession.builder.getOrCreate()
 df_array = []
 years = []
 air_quality_data_folder = "C:/xxx/spark/air-quality-madrid/csvs_per_year"
 for file in os.listdir(air_quality_data_folder):
  if '2018' not in file:
   year = re.findall("\d{4}", file)
   years.append(year[0])
   file_path = os.path.join(air_quality_data_folder, file)
   df = spark.read.csv(file_path, header="true")
   # print(df.columns)
   df1 = df.withColumn('yyyymm', df['date'].substr(0, 7))
   df_final = df1.filter(df1['yyyymm'].substr(0, 4) == year[0]).groupBy(df1['yyyymm']).agg({'PM10': 'avg'})
   df_array.append(df_final)

 pm10_months = [0] * 12
 # print(range(12))
 for df in df_array:
  for i in range(12):
   rows = df.filter(df['yyyymm'].contains('-'+str(i+1).zfill(2))).first()
   # print(rows[1])
   pm10_months[i] += (rows[1]/12)

 years.sort()
 print(years[0] + ' - ' + years[len(years)-1] + '年,每月平均PM10统计')
 m_index = 1
 for data in pm10_months:
  print(str(m_index).zfill(2) + '月份: ' + '||' * round(data))
  m_index += 1

运行结果:

- 2017年,每月平均PM10统计
01月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
02月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
03月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
04月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
05月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
06月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
07月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
08月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
09月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

由以上统计结果,可以看出4月份的PM10最低。

Done!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python抓取网页图片示例(python爬虫)
Apr 27 Python
使用Python的Django框架实现事务交易管理的教程
Apr 20 Python
使用Python解析JSON数据的基本方法
Oct 15 Python
pytorch训练imagenet分类的方法
Jul 27 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
Python tkinter和exe打包的方法
Feb 05 Python
TensorFlow打印输出tensor的值
Apr 19 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
Pytest中conftest.py的用法
Jun 27 Python
Pycharm如何打断点的方法步骤
Jun 13 #Python
用pycharm开发django项目示例代码
Jun 13 #Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 #Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 #Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 #Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 #Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 #Python
You might like
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
用js实现in_array的方法
2013/11/05 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
JS验证不重复验证码
2017/02/10 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
vue 实现把路由单独分离出来
2020/08/13 Javascript
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Python reduce()函数的用法小结
2017/11/15 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python super()函数使用及多重继承
2020/05/06 Python
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
卫校毕业生自我鉴定
2013/10/31 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
企业2014年度工作总结
2014/12/10 职场文书
小学教育见习总结
2015/06/23 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
MySQL 聚合函数排序
2021/07/16 MySQL
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS