Pycharm開發spark程序
使用pycharm連接spark開發python程序。
1.Pycharm本地開發spark程序
1.安裝Java
安裝Java8 64bit,安裝目錄是 C:\Java
,注意,安裝目錄不要有空格,也不要有中文這些,不然會出現不可預知的錯誤。
配置環境變量
JAVA_HOME : C:\Java\jdk8
CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (注意開始是有一點的,分號結尾)
PATH : ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (記得分號結尾)
在cmd中輸入 javac 或java –version 查看安裝情況。
2.安裝scala
spark是是用scala開發的,安裝scala環境,對spark的支持會好些。
scala的版本是有要求的,spark2之後是用的scala2.11,scala2.10和2.10的版本差別還是蠻大的,spark官網也說到版本對應的問題。
安裝scala也很簡單,安裝完成後需要配置環境變量。
SCALA_HOME : C:\scala
CLASSPATH : .;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar;
PATH : %SCALA_HOME%\bin;%SCALA_HOME%\jre\bin;
在cmd中輸入scala,測試安裝是否完成。
2.安裝Hadoop
其實不需要的。
下載hadoop-2.7.3.tar,解壓至 D:\hadoop_spark\hadoop-2.7.3
,下載winutils.exe 並放置在Hadoop的bin目錄下。這是因爲Hadoop要再windows上跑還需要這個編譯程序,在linux下在不需要這麼麻煩。
配置Hadoop環境變量
HADOOP_HOME : D:\hadoop_spark\hadoop-2.7.3
PATH : %HADOOP_HOME%\bin; (注意分號結尾)
4.安裝spark
下載spark-2.0.2-bin-hadoop2.7.tgz,解壓至 D:\hadoop_spark\spark-2.0.2-bin-hadoop2.7
,配置環境變量
SPARK_HOME :D:\hadoop_spark\spark-2.0.2-bin-hadoop2.7
PATH : %SPARK_HOME%\bin; (注意分號結尾)
在cmd中輸入pyspark,測試安裝是否正常。
5.安裝python和pycharm
安裝anaconda的python發行版,一般做分析都是用這個版本。
安裝目錄是 C:\Anaconda3
安裝pycharm社區版。
6.配置pyspark的地址
在C:\Anaconda3\Lib\site-packages
目錄下新建pyspark.pth,內容是D:\hadoop_spark\spark-2.0.2-bin-hadoop2.7\python
即spark目錄下的的python目錄,也就是spark的python API.
注意到沒,其實就是將pyspark當做一個普通的python包對待而已,沒有做其他的配置。
7.測試
在pycharm中新建spark_test項目,再新建一個test.py文件,內容是:
from pyspark import SparkContext
sc = SparkContext("local","Simple App")
doc = sc.parallelize([['a','b','c'],['b','d','d']])
words = doc.flatMap(lambda d:d).distinct().collect()
word_dict = {w:i for w,i in zip(words,range(len(words)))}
word_dict_b = sc.broadcast(word_dict)
def wordCountPerDoc(d):
dict={}
wd = word_dict_b.value
for w in d:
if dict.get(wd[w],0):
dict[wd[w]] +=1
else:
dict[wd[w]] = 1
return dict
print(doc.map(wordCountPerDoc).collect())
print("successful!")
運行,查看是否有問題。
2.Pycharm遠程開發spark程序
參考pycharm遠程開發,我猜只是將python配置位遠程python就可以了。
3.參考
http://www.tuicool.com/articles/iAbInuj
http://blog.csdn.net/cdhnlsj/article/details/51018334
http://blog.csdn.net/ydq1206/article/details/51922148