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中定义结构体的方法
Mar 04 Python
Python 元组(Tuple)操作详解
Mar 11 Python
Python实现的tab文件操作类分享
Nov 20 Python
Python操作CouchDB数据库简单示例
Mar 10 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
Python3.6简单的操作Mysql数据库的三个实例
Oct 17 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
详解Python3中setuptools、Pip安装教程
Jun 18 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
详解Python中的Lock和Rlock
Jan 26 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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
Python psutil模块简单使用实例
2015/04/28 Python
在Python下尝试多线程编程
2015/04/28 Python
利用Python获取操作系统信息实例
2016/09/02 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
护理专业的自荐信
2013/10/22 职场文书
违反学校规定检讨书
2014/01/18 职场文书
2014年体育工作总结
2014/11/24 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
使用Python获取字典键对应值的方法
2022/04/26 Python