機器學習 - pycharm, pyspark, spark集成篇


AS WE ALL KNOW,學機器學習的一般都是從python+sklearn開始學,適用於數據量不大的場景(這里就別計較“不大”具體指標是啥了,哈哈)

數據量大了,就需要用到其他技術了,如:spark, tensorflow,當然也有其他技術,此處略過一坨字...

 

先來看看如何讓這3個集成起來吧(WINDOWS環境):pycharm(python開發環境), pyspark.cmd(REPL命令行接口), spark(spark驅動、MASTER等)

download Anaconda, latest version, which 64bit support for windows, 這里必須安裝64位版本的Anaconda,因為后面tensorflow只支持64位的

https://www.continuum.io/downloads/

安裝Anaconda,都是默認選項就行

 

dowload pycharm from jetbrain site, and install (please do it by yourself),這個很簡單,直接略過

接下來是下載spark,我下的是最新版2.1.0的 http://spark.apache.org/downloads.html

解壓縮后把它復制到一個容易找的目錄,我這是C:\spark-2.1.0-bin-hadoop2.7

這個時候如果直接雙擊bin下的spark-shell.cmd文件的話是會報錯的,主要原因是沒有winutils.exe這東西(用來在windows環境下模擬文件操作的),因此還需要做幾個小步驟才能正常啟動

1. 設置一個假的hadoop目錄,在這個目錄的bin下放剛才說的那個winutils.exe文件(需要自己創建bin目錄)

2. 設置環境變量HADOOP_HOME,值為這個假的hadoop目錄

3. 拷貝winutils.exe到這個bin里,下載

OK,這時可以雙擊spark-shell.cmd了,如下:

HOHO, ==,==,我們不是要搞PYTHON環境嘛,怎么搞scala了,別急,先搞scala是因為先要把基本的給走通,再去搞python環境的接口。

python接口的REPL是這個文件,pyspark.cmd,雙擊,也報錯...

別急,這里是因為python版本問題,anaconda最新版的python解釋器版本是3.6.1,這個版本的spark不支持,需要降低版本 到3.5

卸載python? 不用,用anaconda的環境切換就行了

1. 先創建一個新的開發環境: conda create -n my_new_env_python35

2. 激活這個新的開發環境: activate my_new_env_python35

3. 在這個新的開發環境中安裝python 3.5: conda install python=3.5

這時python3.5版本的解釋器就算是安裝完成了,默認目錄在C:\ProgramData\Anaconda3\envs\my_new_env_python35\python.exe

然后就是需要把spark的python支持包復制到相應的路徑中了,從下圖1復制到my_new_env_python35環境的Lib\site-packages目錄下

接下來需要把python默認版本改成python3.5,需要修改PATH路徑,把python3.5的路徑放在第一個查找路徑下就行了

然后就開始整pycharm開發環境了。 

首先肯定是新建一個python項目了,然后改設置,用來指定python解釋器的路徑,菜單:File-->Settings

接着設置運行時候的配置參數

漏了python調用pyspark的代碼了,代碼如下:

import sys
from operator import add

from pyspark import SparkContext


if __name__ == "__main__":
    sc = SparkContext(appName="PythonWordCount")
    lines = sc.textFile('words.txt')
    count=lines.count()
    print(count)
    counts = lines.flatMap(lambda x: x.split(' ')) \
                  .map(lambda x: (x, 1)) \
                  .reduceByKey(add)
    output = counts.collect()
    for (word, count) in output:
        print("%s: %i" % (word, count))

    sc.stop()

至此,python環境算是搞定了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM