经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Spark » 查看文章
PyCharm搭建Spark开发环境实现第一个pyspark程序
来源:jb51  时间:2019/6/14 9:21:29  对本文有异议

一, 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.在程序中设置环境变量

  1. import os
  2. import sys
  3.  
  4. os.environ['SPARK_HOME'] = 'C:\xxx\spark-2.2.1-bin-hadoop2.7'
  5. sys.path.append('C:\xxx\spark-2.2.1-bin-hadoop2.7\python')

2.在Edit Configuration中添加环境变量

不过还是没有解决程序中代码自动补全。

想了半天,观察到spark提供的pyspark很像单独的安装包,应该可以考虑将pyspark包放到python的安装目录下,这样也就自动添加到之前所设置的pythonpath里了,应该就能实现pyspark的代码补全提示。

将spark下的pyspark包放到python路径下(注意,不是spark下的python!)

最后,实现了pyspark代码补全功能。

二.第一个pyspark程序

作为小白,只能先简单用下python+pyspark了。

数据:Air Quality in Madrid (2001-2018)

需求:根据历史数据统计出每个月平均指标值

  1. import os
  2. import re
  3. from pyspark.sql import SparkSession
  4.  
  5. if __name__ == "__main__":
  6.  
  7. spark = SparkSession.builder.getOrCreate()
  8. df_array = []
  9. years = []
  10. air_quality_data_folder = "C:/xxx/spark/air-quality-madrid/csvs_per_year"
  11. for file in os.listdir(air_quality_data_folder):
  12. if '2018' not in file:
  13. year = re.findall("\d{4}", file)
  14. years.append(year[0])
  15. file_path = os.path.join(air_quality_data_folder, file)
  16. df = spark.read.csv(file_path, header="true")
  17. # print(df.columns)
  18. df1 = df.withColumn('yyyymm', df['date'].substr(0, 7))
  19. df_final = df1.filter(df1['yyyymm'].substr(0, 4) == year[0]).groupBy(df1['yyyymm']).agg({'PM10': 'avg'})
  20. df_array.append(df_final)
  21.  
  22. pm10_months = [0] * 12
  23. # print(range(12))
  24. for df in df_array:
  25. for i in range(12):
  26. rows = df.filter(df['yyyymm'].contains('-'+str(i+1).zfill(2))).first()
  27. # print(rows[1])
  28. pm10_months[i] += (rows[1]/12)
  29.  
  30. years.sort()
  31. print(years[0] + ' - ' + years[len(years)-1] + '年,每月平均PM10统计')
  32. m_index = 1
  33. for data in pm10_months:
  34. print(str(m_index).zfill(2) + '月份: ' + '||' * round(data))
  35. m_index += 1

运行结果:

  1. - 2017年,每月平均PM10统计
  2. 01月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  3. 02月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  4. 03月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  5. 04月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  6. 05月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  7. 06月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  8. 07月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  9. 08月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  10. 09月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  11. 10月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  12. 11月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  13. 12月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

由以上统计结果,可以看出4月份的PM10最低。

Done!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号