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破解验证码实例详解
Dec 08 Python
详解Django 中是否使用时区的区别
Jun 14 Python
Python中dict和set的用法讲解
Mar 28 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
Django中的FBV和CBV用法详解
Sep 15 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
python和php学习哪个更有发展
Jun 17 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
Python 中如何写注释
Aug 28 Python
python中random模块详解
Mar 01 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 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
UCenter Home二次开发指南
2009/05/28 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python类的继承用法示例
2019/01/31 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
python3 logging日志封装实例
2020/04/08 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
详解python tkinter 图片插入问题
2020/09/03 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
门卫人员岗位职责
2013/12/24 职场文书
安全生产检讨书
2014/01/21 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
Python使用pyecharts控件绘制图表
2022/06/05 Python