在win10上搭建pyspark,


  最近在研究Spark,准確的說是pyspark,為了搭個測試環境,之前一直在雲上開Linux機器來搭Hadoop,但是Spark可以Local執行,我就打算在本地搭個環境。遇到了一些問題,記錄一下,也給其他朋友一個思路。

  pyspark在本地搭建需要

    Java JDK 1.8.0 

    Anacoda3

    spark-2.2.3-bin-hadoop2.7
    hadoop-2.7.7

    hadooponwindows-master(后面提供下載連接)

操作步驟:

  1,安裝JDK和Anaconda3

  2,把hadooponwindows-master的bin覆蓋hadoop-2.7.7的bin

      hadooponwindows-master里面的bin主要有winutils.exe,還有一些dll文件,都是需要的

  3,配置Java,Spark,Hadoop環境變量

      Spark和Hadoop的環境配置與Java類似

        (1)需要完成spark_home和bin環境變量相關配置。

     

    

  (2)同樣地,這里也需要配置環境變量,新建HADOOP_HOME變量和新增在path變量下新增…/hadoop/bin。

      為了偷懶,這一塊我主要復制這個連接的內容(感謝):https://blog.csdn.net/weixin_38556445/article/details/78182264

   

下面說下我遇到的兩個問題:

 安裝spark,環境變量已經配置,也已經解壓,但是啟動報錯:

Could not locate executablenull\bin\winutils.exe in the Hadoop binaries

     

 

  %%%解決辦法,或者是問題是沒有把hadooponwindows-master的bin覆蓋hadoop-2.7.7的bin,導致hadoop-2.7.7里面找不到winutils.exe

 (2)報了一個py4j.protocol.Py4JJavaError,這個錯查了很久沒有找到原因,但是我通過下面的方式解決了,不一定對,大家自己嘗試下把。

    

 解決辦法:以管理員的身份打開cmd,然后通過cd命令進入到Hadoop的bin目錄下,然后執行以下命令:
  winutils.exe chmod 777 c:\tmp\Hive

    

   終於OK了,

    

wordcount例程

from pyspark import SparkConf, SparkContext
# 創建SparkConf和SparkContext
conf = SparkConf().setMaster("local").setAppName("lichao-wordcount")
sc = SparkContext(conf=conf)
# 輸入的數據
data = ["hello", "world", "hello", "word", "count", "count", "hello"]
# 將Collection的data轉化為spark中的rdd並進行操作
rdd = sc.parallelize(data)
resultRdd = rdd.map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b)
# rdd轉為collecton並打印
resultColl = resultRdd.collect()
for line in resultColl:
    print(line)

 

 

******報錯還可能是由於cmd命令行沒有用管理員身份運行!!!


免責聲明!

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



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