2015-09-04 18 views
6

Tôi đang chạy Spark 1.4.1 trên máy tính xách tay Mac cục bộ của mình và có thể sử dụng pyspark tương tác mà không gặp bất kỳ sự cố nào. Spark đã được cài đặt thông qua Homebrew và tôi đang sử dụng Anaconda Python. Tuy nhiên, ngay sau khi tôi cố gắng sử dụng spark-submit, tôi nhận được lỗi sau:Không thể nhập SparkContext

15/09/04 08:51:09 ERROR SparkContext: Error initializing SparkContext. 
java.io.FileNotFoundException: Added file file:test.py does not exist. 
    at org.apache.spark.SparkContext.addFile(SparkContext.scala:1329) 
    at org.apache.spark.SparkContext.addFile(SparkContext.scala:1305) 
    at org.apache.spark.SparkContext$$anonfun$15.apply(SparkContext.scala:458) 
    at org.apache.spark.SparkContext$$anonfun$15.apply(SparkContext.scala:458) 
    at scala.collection.immutable.List.foreach(List.scala:318) 
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:458) 
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:61) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:234) 
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) 
    at py4j.Gateway.invoke(Gateway.java:214) 
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:79) 
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68) 
    at py4j.GatewayConnection.run(GatewayConnection.java:207) 
    at java.lang.Thread.run(Thread.java:745) 
15/09/04 08:51:09 ERROR SparkContext: Error stopping SparkContext after init error. 
java.lang.NullPointerException 
    at org.apache.spark.network.netty.NettyBlockTransferService.close(NettyBlockTransferService.scala:152) 
    at org.apache.spark.storage.BlockManager.stop(BlockManager.scala:1216) 
    at org.apache.spark.SparkEnv.stop(SparkEnv.scala:96) 
    at org.apache.spark.SparkContext.stop(SparkContext.scala:1659) 
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:565) 
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:61) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:234) 
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) 
    at py4j.Gateway.invoke(Gateway.java:214) 
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:79) 
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68) 
    at py4j.GatewayConnection.run(GatewayConnection.java:207) 
    at java.lang.Thread.run(Thread.java:745) 
Traceback (most recent call last): 
    File "test.py", line 35, in <module> sc = SparkContext("local","test") 
    File "/usr/local/Cellar/apache-spark/1.4.1/libexec/python/lib/pyspark.zip/pyspark/context.py", line 113, in __init__ 
    File "/usr/local/Cellar/apache-spark/1.4.1/libexec/python/lib/pyspark.zip/pyspark/context.py", line 165, in _do_init 
    File "/usr/local/Cellar/apache-spark/1.4.1/libexec/python/lib/pyspark.zip/pyspark/context.py", line 219, in _initialize_context 
    File "/usr/local/Cellar/apache-spark/1.4.1/libexec/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 701, in __call__ 
    File "/usr/local/Cellar/apache-spark/1.4.1/libexec/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value 
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext. 
: java.io.FileNotFoundException: Added file file:test.py does not exist. 
    at org.apache.spark.SparkContext.addFile(SparkContext.scala:1329) 
    at org.apache.spark.SparkContext.addFile(SparkContext.scala:1305) 
    at org.apache.spark.SparkContext$$anonfun$15.apply(SparkContext.scala:458) 
    at org.apache.spark.SparkContext$$anonfun$15.apply(SparkContext.scala:458) 
    at scala.collection.immutable.List.foreach(List.scala:318) 
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:458) 
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:61) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:234) 
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) 
    at py4j.Gateway.invoke(Gateway.java:214) 
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:79) 
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68) 
    at py4j.GatewayConnection.run(GatewayConnection.java:207) 
    at java.lang.Thread.run(Thread.java:745) 

Dưới đây là mã của tôi:

from pyspark import SparkContext 

if __name__ == "__main__": 
    sc = SparkContext("local","test") 
    sc.parallelize([1,2,3,4]) 
    sc.stop() 

Nếu tôi chuyển hồ sơ cho bất cứ nơi nào trong thư mục /usr/local/Cellar/apache-spark/1.4.1/, sau đó spark-submit hoạt động tốt. Tôi có các biến môi trường của tôi được đặt như sau:

export SPARK_HOME="/usr/local/Cellar/apache-spark/1.4.1" 
export PATH=$SPARK_HOME/bin:$PATH 
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/lib/py4j-0.8.2.1-src.zip 

Tôi chắc chắn có điều gì đó không đúng trong môi trường của mình, nhưng dường như tôi không thể theo dõi nó.

+1

Hãy thử sử dụng 'spark-submit /text.py', có vẻ như nếu "spark-submit' không thể tìm thấy tập lệnh Python của bạn. –

+0

Tôi đã thử đường dẫn đầy đủ và vẫn gặp lỗi tương tự. Tôi cũng đã kiểm tra các điều khoản trên thư mục và điều đó dường như không phải là vấn đề. – caleboverman

+4

Thử thêm thư mục chứa ´test.py´ vào PYTHONPATH của bạn. –

Trả lời

0

Tệp trăn được thực thi bởi spark-submit phải ở trên PYTHONPATH. Hoặc thêm đường dẫn đầy đủ của thư mục bằng cách thực hiện:

export PYTHONPATH=full/path/to/dir:$PYTHONPATH 

hoặc bạn cũng có thể thêm '.' đến PYTHONPATH nếu bạn đã ở trong thư mục nơi các tập lệnh python là

export PYTHONPATH='.':$PYTHONPATH 

Nhờ @Def_Os để chỉ ra điều đó!

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