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基于PycURL自动处理cookie的方法
Jul 25 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
python实现按长宽比缩放图片
Jun 07 Python
Python使用pyodbc访问数据库操作方法详解
Jul 05 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
Python os.access()用法实例
Feb 18 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
python创建文本文件的简单方法
Aug 30 Python
Python 列表推导式需要注意的地方
Oct 23 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将数据导入到Foxmail
2006/10/09 PHP
PHP6 mysql连接方式说明
2009/02/09 PHP
php的hash算法介绍
2014/02/13 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
浅谈JavaScript字符集
2014/05/22 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
js实现随机点名
2021/01/19 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
pytorch梯度剪裁方式
2020/02/04 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
python中的插入排序的简单用法
2021/01/19 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
医学生自我评价
2014/01/27 职场文书
我的老师教学反思
2014/05/01 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
先进教师个人总结
2015/02/11 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python