java.io.IOException: Hadoop बायनेरिज़ में निष्पादन योग्य null \ bin \ winutils.exe का पता नहीं लगा सका। खिड़कियों पर स्पार्क ग्रहण 7


92

मैं (मावेन स्पार्क प्रोजेक्ट) sparkमें एक साधारण नौकरी नहीं चला पा रहा हूँScala IDEWindows 7

स्पार्क कोर निर्भरता को जोड़ा गया है।

val conf = new SparkConf().setAppName("DemoDF").setMaster("local")
val sc = new SparkContext(conf)
val logData = sc.textFile("File.txt")
logData.count()

त्रुटि:

16/02/26 18:29:33 INFO SparkContext: Created broadcast 0 from textFile at FrameDemo.scala:13
16/02/26 18:29:34 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:362)
    at <br>org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
    at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
    at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)
    at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)<br>
    at scala.Option.map(Option.scala:145)<br>
    at org.apache.spark.rdd.HadoopRDD.getJobConf(HadoopRDD.scala:176)<br>
    at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:195)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>
    at scala.Option.getOrElse(Option.scala:120)<br>
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>
    at scala.Option.getOrElse(Option.scala:120)<br>
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>
    at org.apache.spark.SparkContext.runJob(SparkContext.scala:1929)<br>
    at org.apache.spark.rdd.RDD.count(RDD.scala:1143)<br>
    at com.org.SparkDF.FrameDemo$.main(FrameDemo.scala:14)<br>
    at com.org.SparkDF.FrameDemo.main(FrameDemo.scala)<br>

जवाबों:


141

यहाँ समाधान के साथ आपकी समस्या का अच्छा विवरण दिया गया है।

  1. Http://utublic-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe से winutils.exe डाउनलोड करें
  2. OS स्तर पर या प्रोग्रामेटिक रूप से अपना HADOOP_HOME पर्यावरण चर सेट करें:

    System.setProperty ("hadoop.home.dir", "winutils के साथ फ़ोल्डर में पूर्ण पथ");

  3. का आनंद लें


14
मुझे HADOOP_HOME को बिन फ़ोल्डर के बजाय hadoop फ़ोल्डर में सेट करना है।
स्टेनली

4
इसके अलावा, हडूप के संस्करण के आधार पर सही winutils.exe डाउनलोड करना सुनिश्चित करें कि स्पार्क संकलित किया गया है (इसलिए, जरूरी नहीं कि ऊपर लिंक)। अन्यथा, दर्द इंतजार कर रहा है :)
एनपी 3

System.setProperty ("hasoop.home.dir", "C: \\ hadoop-2.7.1 \\")
श्याम गुप्त

1
हाँ बिल्कुल वैसा ही जैसा @Stanley कहता है। बिन फ़ोल्डर के बजाय Hadoff फ़ोल्डर में HADOOP_HOME स्थापित करने के साथ काम किया।
जैज

@ NP3 और आप उस संस्करण को कैसे जानते हैं? मैं नवीनतम pyspark का उपयोग कर रहा हूँ। धन्यवाद,
JDPeckham

66
  1. Winutils.exe डाउनलोड करें
  2. फ़ोल्डर बनाएँ, कहते हैं C:\winutils\bin
  3. winutils.exeअंदर कॉपी करेंC:\winutils\bin
  4. सेट वातावरण चर HADOOP_HOMEकोC:\winutils

यदि आपके पास कोई cmd लाइन खुली है, तो इसे प्रभावित करने के लिए चर के लिए पुनरारंभ करें।
16

26

इसका पीछा करो:

  1. binकिसी भी निर्देशिका में एक फ़ोल्डर बनाएं (चरण 3 में उपयोग किए जाने के लिए)।

  2. Winutils.exe डाउनलोड करें और इसे बिन निर्देशिका में रखें।

  3. अब System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");अपने कोड में जोड़ें ।


2
बहुत बहुत धन्यवाद, बस मैं क्या देख रहा था
user373201

3
यह ध्यान दिया जाना चाहिए कि इंगित किए जाने वाले मार्ग में 'बिन' निर्देशिका शामिल नहीं होनी चाहिए। Ex: यदि वह रास्ता जहाँ winutils.exe "D: //Hadoop//bin//winutils.exe" है, तो hasoop.home.dir के लिए पथ "D: // Hadoop" होना चाहिए
केशव प्रदीप रामनाथ

4

अगर हम नीचे मुद्दा देखें

ERROR शैल: हैडूप बाइनरी पथ में विंडुटिल बाइनरी का पता लगाने में विफल

java.io.IOException: Hadoop बायनेरिज़ में निष्पादन योग्य null \ bin \ winutils.exe का पता नहीं लगा सका।

फिर निम्न चरणों का पालन करें

  1. से winutils.exe डाउनलोड करें http://public-repo-1.hortonworks.com/hdp- win-Alpha / ।
  2. और इसे आपके द्वारा बनाए गए किसी भी फ़ोल्डर के बिन फ़ोल्डर में रखें। C C: \ Hadoop \ bin
  3. और SparkContext या SparkConf System.setProperty ("hadoop.home.dir", "C: \ Hadoop") बनाने से पहले प्रोग्राम में निम्नलिखित पंक्ति जोड़ें;

4

विंडोज 10 पर - आपको दो अलग-अलग तर्क जोड़ने चाहिए।

(1) सिस्टम वैरिएबल के तहत नया वैरिएबल और मान जोड़ें - HADOOP_HOME और पाथ (यानी c: \ Hadoop)।

(2) "पथ" चर में "C: \ Hadoop \ bin" के रूप में नई प्रविष्टि जोड़ें / जोड़ें।

ऊपर वाले ने मेरे लिए काम किया।


4
1) Download winutils.exe from https://github.com/steveloughran/winutils 
2) Create a directory In windows "C:\winutils\bin
3) Copy the winutils.exe inside the above bib folder .
4) Set the environmental property in the code 
  System.setProperty("hadoop.home.dir", "file:///C:/winutils/");
5) Create a folder "file:///C:/temp" and give 777 permissions.
6) Add config property in spark Session ".config("spark.sql.warehouse.dir", "file:///C:/temp")"

2

यूनिट टेस्ट चलाते समय भी मुझे यही समस्या हुई। मुझे यह समाधान हल मिला:

निम्न समाधान इस संदेश से छुटकारा पाने की अनुमति देता है:

    File workaround = new File(".");
    System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath());
    new File("./bin").mkdirs();
    new File("./bin/winutils.exe").createNewFile();

से: https://issues.cloudera.org/browse/DISTRO-544


2

आप वैकल्पिक रूप winutils.exeसे GITHUB से डाउनलोड कर सकते हैं :

https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin

hadoop-2.7.1इच्छित संस्करण के साथ बदलें और फ़ाइल को अंदर रखेंD:\hadoop\bin

यदि आपके पास अपनी मशीन पर पर्यावरण चर सेटिंग्स तक पहुंच अधिकार नहीं है, तो बस अपने कोड में नीचे की पंक्ति जोड़ें:

System.setProperty("hadoop.home.dir", "D:\\hadoop");

1

सिस्टम गुणों में Hadoop_Home पर्यावरण चर सेट करना मेरे लिए काम नहीं करता था। लेकिन यह किया:

  • ग्रहण रन कॉन्फ़िगरेशन वातावरण टैब में Hadoop_Home सेट करें।
  • यहां से 'विंडोज एनवायरनमेंट सेटअप' का पालन करें

0

HADOOP_HOMEविंडोज़ के लिए अपने पर्यावरण चर का उल्लेख करने के शीर्ष पर C:\winutils, आपको यह भी सुनिश्चित करना होगा कि आप मशीन के व्यवस्थापक हैं। यदि पर्यावरण चर नहीं और जोड़ना आपको व्यवस्थापक क्रेडेंशियल (यहां तक ​​कि USERचर के तहत ) के लिए संकेत देता है, तो ये चर व्यवस्थापक के रूप में आपके कमांड प्रॉम्प्ट को शुरू करने के बाद लागू होंगे।


0

मुझे निम्नलिखित विवरण जावा 1.8.0_121, स्पार्क स्पार्क-1.6.1-बिन-हडूप 2, विंडोज 10 और ग्रहण ऑक्सीजन के साथ भी इसी तरह की समस्या का सामना करना पड़ा है। जब मैंने ग्रहण में अपना वर्डकाउंट.जवा चलाया तो एक सिस्टम वेरिएबल के रूप में GADOOP_HOME का उपयोग करके जैसा कि पिछली पोस्ट में बताया गया है, यह काम नहीं किया, मेरे लिए क्या काम किया है -

System.setProperty ("hadoop.home.dir", "PATH / TO / THE / DIR");

PATH / TO / THE / DIR / bin = winutils.exe चाहे आप एक जावा एप्लिकेशन के रूप में ग्रहण के भीतर चलाएं या cmd का उपयोग करके स्पार्क-सबमिट करें

स्पार्क-सबमिट --class groupid.artifactid.classname --master लोकल [2] / जार फाइल का पथ, जो मावेन / पाथ का उपयोग करके डेमो टेस्ट फाइल / आउटपुट डायरेक्टरी कमांड के पथ तक जाता है।

उदाहरण: स्पार्क / घर / स्थान / बिन के बिन स्थान पर जाएं और बताए अनुसार स्पार्क-सबमिट निष्पादित करें,

D: \ BigData \ spark-2.3.0-bin-hadoop2.7 \ bin> स्पार्क-सबमिट --class com.bigdata.abdus.sparkdemo.WordCount --master स्थानीय [1] D: BigData \ स्पार्क-क्विकस्टार्ट \ लक्ष्य \ स्पार्क-क्विकस्टार्ट-0.0.1-SNAPSHOT.jar D: \ BigData \ स्पार्क-क्विकस्टार्ट \ wordcount.txt


0

यह एक मुश्किल है ... आपके भंडारण पत्र को कैपिटल होना चाहिए। उदाहरण के लिए " C : \ ..."

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.