2015-09-22 19 views
34

Tôi cố gắng thực thi spark-shell trên Windows 10, nhưng tôi vẫn gặp phải lỗi này mỗi khi tôi chạy nó.Tại sao vỏ bọc không thành công với NullPointerException?

Tôi đã sử dụng cả phiên bản mới nhất và phiên bản spark-1.5.0-bin-hadoop2.4.

15/09/22 18:46:24 WARN Connection: BoneCP specified but not present in  
CLASSPATH (or one of dependencies) 
15/09/22 18:46:24 WARN Connection: BoneCP specified but not present in     CLASSPATH (or one of dependencies) 
15/09/22 18:46:27 WARN ObjectStore: Version information not found in  metastore. hive.metastore.schema.verification is not enabled so recording the  schema version 1.2.0 
15/09/22 18:46:27 WARN ObjectStore: Failed to get database default,   returning NoSuchObjectException 
15/09/22 18:46:27 WARN : Your hostname, DESKTOP-8JS2RD5 resolves to a  loopback/non-reachable address: fe80:0:0:0:0:5efe:c0a8:103%net1, but we couldn't  find any external IP address! 
java.lang.RuntimeException: java.lang.NullPointerException 
     at  org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522) 
     at org.apache.spark.sql.hive.client.ClientWrapper.<init> (ClientWrapper.scala:171) 
    at  org.apache.spark.sql.hive.HiveContext.executionHive$lzycompute(HiveContext.scala :163) 
     at  org.apache.spark.sql.hive.HiveContext.executionHive(HiveContext.scala:161) 
     at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:168) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.apache.spark.repl.SparkILoop.createSQLContext(SparkILoop.scala:1028) 
    at $iwC$$iwC.<init>(<console>:9) 
    at $iwC.<init>(<console>:18) 
    at <init>(<console>:20) 
    at .<init>(<console>:24) 
    at .<clinit>(<console>) 
    at .<init>(<console>:7) 
    at .<clinit>(<console>) 
    at $print(<console>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.spark.repl.SparkIMain$ReadEvalPrint.call(SparkIMain.scala:1065) 
    at org.apache.spark.repl.SparkIMain$Request.loadAndRun(SparkIMain.scala:1340) 
    at org.apache.spark.repl.SparkIMain.loadAndRunReq$1(SparkIMain.scala:840) 
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871) 
    at org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:819) 
    at org.apache.spark.repl.SparkILoop.reallyInterpret$1(SparkILoop.scala:857) 
    at org.apache.spark.repl.SparkILoop.interpretStartingWith(SparkILoop.scala:902) 
    at org.apache.spark.repl.SparkILoop.command(SparkILoop.scala:814) 
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:132) 
    at org.apache.spark.repl.SparkILoopInit$$anonfun$initializeSpark$1.apply(SparkILoopInit.scala:124) 
    at org.apache.spark.repl.SparkIMain.beQuietDuring(SparkIMain.scala:324) 
    at org.apache.spark.repl.SparkILoopInit$class.initializeSpark(SparkILoopInit.scala:124) 
    at org.apache.spark.repl.SparkILoop.initializeSpark(SparkILoop.scala:64) 
    at org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$process$1$$anonfun$apply$mcZ$sp$5.apply$mcV$sp(SparkILoop.scala:974) 

      at  org.apache.spark.repl.SparkILoopInit$class.runThunks(SparkILoopInit.scala:159) 
      at org.apache.spark.repl.SparkILoop.runThunks(SparkILoop.scala:64) 
      at  org.apache.spark.repl.SparkILoopInit$class.postInitialization(SparkILoopInit.sca  la:108) 
      at  org.apache.spark.repl.SparkILoop.postInitialization(SparkILoop.scala:64) 
      at  org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc  ess$1.apply$mcZ$sp(SparkILoop.scala:991) 
      at  org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc  ess$1.apply(SparkILoop.scala:945) 
      at  org.apache.spark.repl.SparkILoop$$anonfun$org$apache$spark$repl$SparkILoop$$proc  ess$1.apply(SparkILoop.scala:945) 
      at  scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scal  a:135) 
      at  org.apache.spark.repl.SparkILoop.org$apache$spark$repl$SparkILoop$$process(Spark  ILoop.scala:945) 
      at org.apache.spark.repl.SparkILoop.process(SparkILoop.scala:1059) 
      at org.apache.spark.repl.Main$.main(Main.scala:31) 
      at org.apache.spark.repl.Main.main(Main.scala) 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
      at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:672) 
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
    Caused by: java.lang.NullPointerException 
    at java.lang.ProcessBuilder.start(Unknown Source) 
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:445) 
    at org.apache.hadoop.util.Shell.run(Shell.java:418) 
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650) 
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:739) 
    at org.apache.hadoop.util.Shell.execCommand(Shell.java:722) 
    at org.apache.hadoop.fs.FileUtil.execCommand(FileUtil.java:1097) 
    at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.loadPermissionInfo(RawLocalFileSystem.java:559) 
    at org.apache.hadoop.fs.RawLocalFileSystem$DeprecatedRawLocalFileStatus.getPermission(RawLocalFileSystem.java:534) 
    at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:599) 
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554) 
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508) 
    ... 56 more 

    <console>  :10: error: not found: value sqlContext 
       import sqlContext.implicits._ 
       ^
    <console>:10: error: not found: value sqlContext 
     import sqlContext.sql 
     ^

    scala> 
+0

Tôi đã tải xuống spark-1.5.0-bin-hadoop2.4 và bắt đầu chương trình phát tia lửa, nhưng tải sqlContext mà không gặp sự cố với tôi. Tôi nhận được các thông báo cảnh báo tương tự, ** ngoại trừ ** cho cảnh báo tên máy chủ, vì vậy tôi đoán là bạn sẽ cần sửa cấu hình mạng của mình. –

+0

Tôi không thể tìm ra nguyên nhân. Tôi đã chơi với gói dựng sẵn. Sau khi tôi đã thử tải xuống mã nguồn 'git clone git: //github.com/apache/spark.git -b branch-1.6' nó đã hoạt động. – Habib

+0

@Habib Thx. Tôi cũng đang chơi với gói dựng sẵn. Bạn đang sử dụng hệ điều hành nào? – mbh86

Trả lời

3

Tôi đoán là bạn đang chạy vào https://issues.apache.org/jira/browse/SPARK-10528. Tôi đã nhìn thấy cùng một vấn đề đang chạy trên Windows 7. Ban đầu tôi đã nhận được NullPointerException như bạn đã làm. Khi tôi đặt winutils vào thư mục bin và đặt HADOOP_HOME để trỏ đến thư mục Spark, tôi đã nhận được lỗi được mô tả trong vấn đề JIRA.

+0

Vì vậy, bạn đang nói rằng đưa HADOOP_HOME vào bản vẽ tia lửa, điều này gây ra lỗi? HADOOP_HOME của tôi hiện được đặt thành c: \ winutitls, không phải là nhà phát tia lửa của tôi và hiện tôi cũng gặp lỗi này –

2

Hoặc có lẽ liên kết này ở đây dưới đây được dễ dàng hơn để làm theo,

https://wiki.apache.org/hadoop/WindowsProblems

Về cơ bản tải về và copy vào thư mục bin winutils.exe spark \ của bạn. Chạy lại spark-shell

Nếu bạn chưa đặt/tmp/hive thành trạng thái có thể ghi, hãy làm như vậy.

+0

Ngoài ra, tốt nhất bạn nên kích hoạt thư mục spark-shell trong/spark/bin của mình. – kepung

+0

điều này có nghĩa là gì? Trái ngược với việc bắn nó lên ở đâu? Xin lỗi nếu câu hỏi này có vẻ điên rồ, chỉ cần không chắc tại sao mọi người sẽ bắn nó từ bất cứ nơi nào khác, và tôi đang cố gắng khắc phục một cái gì đó bản thân mình và tôi chỉ cố gắng loại trừ tất cả mọi thứ như là một nguyên nhân của thất bại. –

44

Tôi đã sử dụng Spark 1.5.2 với Hadoop 2.6 và có sự cố tương tự. Giải quyết bằng cách thực hiện các bước sau:

  1. Tải xuống winutils.exe từ repository vào một số thư mục cục bộ, ví dụ: C:\hadoop\bin.

  2. Đặt HADOOP_HOME thành C:\hadoop.

  3. Tạo thư mục c:\tmp\hive (sử dụng Windows Explorer hoặc bất kỳ công cụ nào khác).

  4. Mở dấu nhắc lệnh có quyền quản trị.

  5. Run C:\hadoop\bin\winutils.exe chmod 777 /tmp/hive

Với điều đó, tôi vẫn nhận được một số cảnh báo, nhưng không có lỗi và có thể chạy các ứng dụng Spark tốt.

+0

'HADOOP_HOME' là người dùng nếu biến hệ thống? Bạn có chạy nó trên Windows 10 không? Tôi hỏi vì nó không hoạt động đối với tôi ... – Bakus123

+0

Bạn đã đặt 'SPARK_LOCAL_HOSTNAME = localhost' chưa? – Bakus123

+0

Tôi vẫn nhận được một số cảnh báo, nhưng không có ERROR. – max

0

Bạn có thể giải quyết vấn đề này bằng cách đặt mysqlconnector jar trong thư mục spark-1.6.0/libs và khởi động lại nó. Nó hoạt động.

Điều quan trọng là ở đây thay vì chạy bằng tia vỏ bạn nên làm

spark-shell --driver-class-path /home/username/spark-1.6.0-libs-mysqlconnector.jar 

Hy vọng nó sẽ làm việc.

5

Tôi đang đối mặt với một vấn đề tương tự, giải quyết vấn đề bằng cách đặt thư mục winutil vào thùng rác. Hadoop_home nên được đặt là C: \ Winutils và winutil được đặt trong C: \ Winutils \ bin.

Windows 10 64 Winutils chút có sẵn trong https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin

Cũng đảm bảo rằng dòng lệnh có quyền quản trị.

Tham khảo https://wiki.apache.org/hadoop/WindowsProblems

+0

chạy dòng lệnh khi quản trị viên làm việc. cảm ơn – K246

1

Đối với Python - Tạo một SparkSession trong python của bạn (phần cấu hình này chỉ dành cho Windows)

spark = SparkSession.builder.config("spark.sql.warehouse.dir", "C:/temp").appName("SparkSQL").getOrCreate() 

Sao chép winutils.exe và giữ trong C: \ winutils \ thùng rác và thực hiện các lệnh dưới đây

C:\Windows\system32>C:\winutils\bin\winutils.exe chmod 777 C:/temp 

Chạy nhắc lệnh trong chế độ ADMIN (Chạy với tư cách Quản trị viên)

1

Bạn cần cấp quyền cho thư mục/tmp/hive để giải quyết ngoại lệ này.

Hy vọng bạn đã có winutils.exe và đặt HADOOP_HOME biến môi trường. Sau đó mở cửa sổ lệnh command prompt và chạy sau as administrator:

Nếu winutils.exe hiện diện trong D: \ winutils \ bin vị trí và \ tmp \ hive cũng nằm trong ổ đĩa D:

D:\winutils\bin\winutils.exe chmod 777 D:\tmp\hive 

Để biết thêm chi tiết, bạn có thể tham khảo các liên kết sau đây:

Frequent Issues occurred during Spark Development
How to run Apache Spark on Windows7 in standalone mode

0

Sự cố của tôi đã có các tệp .exe's/Jars khác bên trong thư mục winutils/bin. Vì vậy, tôi xóa tất cả những người khác và đã được trái với winutils.exe một mình. Đã sử dụng tia lửa 2.1.1

0

Sự cố đã được giải quyết sau khi cài đặt đúng phiên bản Java trong trường hợp của tôi là java 8 và thiết lập các biến môi trường. Hãy chắc chắn rằng bạn chạy winutils.exe để tạo một thư mục tạm thời như dưới đây.

c:\winutils\bin\winutils.exe chmod 777 \tmp\hive 

Ở trên không được trả lại bất kỳ lỗi nào. Sử dụng java -version để xác minh phiên bản java bạn đang sử dụng trước khi gọi trình bao bọc tia lửa.

Các vấn đề liên quan