PyCharm搭建Spark開發(fā)環(huán)境實(shí)現(xiàn)第一個(gè)pyspark程序
一, PyCharm搭建Spark開發(fā)環(huán)境
Windows7, Java1.8.0_74, Scala 2.12.6, Spark 2.2.1, Hadoop2.7.6
通常情況下,Spark開發(fā)是基于Linux集群的,但這里作為初學(xué)者并且囊中羞澀,還是在windows環(huán)境下先學(xué)習(xí)吧。
參照這個(gè)配置本地的Spark環(huán)境。
之后就是配置PyCharm用來開發(fā)Spark。本人在這里浪費(fèi)了不少時(shí)間,因?yàn)榘俣瘸鰜淼臒o非就以下兩種方式:
1.在程序中設(shè)置環(huán)境變量
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中添加環(huán)境變量


不過還是沒有解決程序中代碼自動(dòng)補(bǔ)全。
想了半天,觀察到spark提供的pyspark很像單獨(dú)的安裝包,應(yīng)該可以考慮將pyspark包放到python的安裝目錄下,這樣也就自動(dòng)添加到之前所設(shè)置的pythonpath里了,應(yīng)該就能實(shí)現(xiàn)pyspark的代碼補(bǔ)全提示。
將spark下的pyspark包放到python路徑下(注意,不是spark下的python?。?/p>


最后,實(shí)現(xiàn)了pyspark代碼補(bǔ)全功能。

二.第一個(gè)pyspark程序
作為小白,只能先簡單用下python+pyspark了。
數(shù)據(jù):Air Quality in Madrid (2001-2018)
需求:根據(jù)歷史數(shù)據(jù)統(tǒng)計(jì)出每個(gè)月平均指標(biāo)值
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統(tǒng)計(jì)')
m_index = 1
for data in pm10_months:
print(str(m_index).zfill(2) + '月份: ' + '||' * round(data))
m_index += 1
運(yùn)行結(jié)果:
- 2017年,每月平均PM10統(tǒng)計(jì) 01月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 02月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 03月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 04月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 05月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 06月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 07月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 08月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 09月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 10月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 11月份: |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 12月份: ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
由以上統(tǒng)計(jì)結(jié)果,可以看出4月份的PM10最低。
Done!
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python?chinesecalendar報(bào)錯(cuò):"no?available?data?for?ye
這篇文章主要介紹了python?chinesecalendar報(bào)錯(cuò):“no?available?data?for?year?{},?only?year?between?[{},?{}]?supported“的相關(guān)知識(shí),需要的朋友可以參考下2023-03-03
Python設(shè)計(jì)模式之簡單工廠模式實(shí)例詳解
這篇文章主要介紹了Python設(shè)計(jì)模式之簡單工廠模式,結(jié)合實(shí)例形式分析了簡單工廠模式的概念、原理及相關(guān)使用技巧,需要的朋友可以參考下2019-01-01
提升?Python?代碼運(yùn)行速度的6個(gè)技巧
本文分享了提升?Python?代碼運(yùn)行速度的6個(gè)技巧,Python?比我們想象的運(yùn)行的要快。我們之所以有先入為主的認(rèn)為Python運(yùn)行慢,可能是我們平常的誤用和缺乏使用技巧知識(shí)。接下來讓我們看看如何用一些簡單的Trick來提高我們程序的運(yùn)行性能,需要的朋友可以參考一下2022-01-01
python用reduce和map把字符串轉(zhuǎn)為數(shù)字的方法
最近在復(fù)習(xí)高階函數(shù)的時(shí)候,有一道題想了半天解不出來。于是上午搜索資料,看了下別人的解法,發(fā)現(xiàn)學(xué)習(xí)編程,思維真的很重要。下面這篇文章就來給大家介紹了python利用reduce和map把字符串轉(zhuǎn)為數(shù)字的思路及方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12
關(guān)于pygame自定義窗口創(chuàng)建及相關(guān)操作指南
對(duì)于開發(fā)一個(gè)游戲來說,窗口的顯示肯定是前提中的前提,對(duì)于pygame來說,只需要一小段代碼就可以初始化窗口,下面這篇文章主要給大家介紹了關(guān)于pygame自定義窗口創(chuàng)建及相關(guān)操作的相關(guān)資料,需要的朋友可以參考下2022-07-07
Python基于YOLOv8和OpenCV實(shí)現(xiàn)車道線和車輛檢測功能
使用YOLOv8(You Only Look Once)和OpenCV實(shí)現(xiàn)車道線和車輛檢測,目標(biāo)是創(chuàng)建一個(gè)可以檢測道路上的車道并識(shí)別車輛的系統(tǒng),并估計(jì)它們與攝像頭的距離,這篇文章主要介紹了Python基于YOLOv8和OpenCV實(shí)現(xiàn)車道線和車輛檢測,需要的朋友可以參考下2025-01-01

