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创建列表并给列表赋初始值的方法
Jul 28 Python
详解Python Socket网络编程
Jan 05 Python
python3设计模式之简单工厂模式
Oct 17 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
Python中单例模式总结
Feb 20 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 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 图片上添加透明度渐变的效果
2009/06/29 PHP
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
jQuery 表格工具集
2010/04/25 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python subprocess模块学习总结
2014/03/13 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
python中pip的安装与使用教程
2018/08/10 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
经典c++面试题四
2015/05/14 面试题
保安自我鉴定范文
2013/12/08 职场文书
英文请假条
2014/04/11 职场文书
运动会口号大全
2014/06/07 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书