1. 程式人生 > 實用技巧 >spark 執行wc-demo報錯歸總(saveAsTextFile方法)

spark 執行wc-demo報錯歸總(saveAsTextFile方法)

  1. 核心報錯日誌
org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDescriptor
  1. 錯誤原因
在linux上執行成功的demo,程式碼放到win上就執行失敗,則可以確定是系統的不相容問題
根據查詢的各種資料可以總結出是由於 win系統缺少了hadoop持久化資料的時候的hadoop.dll和winutil.exe檔案
  1. 解決步驟
    1. 這是一個官方的bug,因此為了統一解決此問題,官方提供了GitHub連結https://github.com/steveloughran/winutils

      下載即可,50多m的大小

    2. 配置hadoop環境變數,也就是實現在cmd中能正確的有hadoop -version。預設使用spark執行wc-demo了學習階段下,基本都知道如何配置HADOOP_HOME.不再多說

    3. 找到下載檔案中的和本機Hadoop大版本符合的檔案下的bin,複製覆蓋掉本地的hadoop中的bin,有的是讓只複製hadoop.dll和winutil.exe。但是既然官方都直接給了bin,那就直接覆蓋掉

    4. 開啟bin,複製hadoop.dll和winutil.exe,貼上到C:\Windows\System32資料夾下。

    5. 我是在idea中執行的wc-demo,因此rebuild了一下,再run。rdd.saveAsTextFile("targetPath") 執行成功。

  1. 結語

    本人實力一般,時間也有限,因此沒有去深究很多為什麼這樣做的原因。只有一個大概的思路,知道要這麼做是為了什麼。