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操作CouchDB的方法
Oct 08 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
python中几种自动微分库解析
Aug 29 Python
python 求定积分和不定积分示例
Nov 20 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
python3读取autocad图形文件.py实例
Jun 05 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
keras topN显示,自编写代码案例
Jul 03 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
python turtle绘图
May 04 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
How do I change MySQL timezone?
2008/03/26 PHP
PHP分页详细讲解(有实例)
2013/10/30 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
python简单读取大文件的方法
2016/07/01 Python
python版本的仿windows计划任务工具
2018/04/30 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
2014年学生工作总结
2014/11/20 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
教师岗位职责
2015/02/03 职场文书
匿名信格式范文
2015/05/27 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书