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 相关文章推荐
Php多进程实现代码
May 07 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
python 多线程重启方法
Feb 18 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python中自带的三个装饰器的实现
Nov 08 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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+APACHE实现用户论证的方法
2006/10/09 PHP
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP教程 预定义变量
2009/10/23 PHP
smarty简单入门实例
2014/11/28 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
揭牌仪式主持词
2014/03/19 职场文书
快递员岗位职责
2014/09/12 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
JavaScript实现班级抽签小程序
2021/05/19 Javascript
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python