[ https://issues.apache.org/jira/browse/SPARK-15378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15288665#comment-15288665 ]
Nick Pentreath edited comment on SPARK-15378 at 5/18/16 9:17 AM: ----------------------------------------------------------------- If you are trying to run on a cluster, then either the library needs to be installed on each worker node, or you can distribute libraries using the {{--py-files}} option of {{spark-submit}}. Please see [submitting applications guide|http://spark.apache.org/docs/latest/submitting-applications.html#advanced-dependency-management] for details. was (Author: mlnick): If you are trying to run on a cluster, then either the library needs to be installed on each worker node, or you can distribute libaries using the {{--py-files}} option of {{spark-submit}}. Please see [submitting applications guide|http://spark.apache.org/docs/latest/submitting-applications.html#advanced-dependency-management] for details. > Unable to load NLTK in spark RDD pipeline > ------------------------------------------ > > Key: SPARK-15378 > URL: https://issues.apache.org/jira/browse/SPARK-15378 > Project: Spark > Issue Type: Bug > Components: PySpark, Spark Core > Environment: spark version 1.6.1 > Reporter: Krishna Prasad > Labels: RDD, spark, spark-submit > > h1.Info: > * spark version 1.6.1 > * python version 2.7.9 > * I have install NLTK and its working fine with the following code, I am > running in *pyspark shell* > {code} > >>> from nltk.tokenize import word_tokenize > >>> text = "Hello, this is testing of nltk in pyspark, mainly > word_tokenize functions in nltk.tokenize, working fine with PySpark, please > see the below example" > >>> text > //'Hello, this is testing of nltk in pyspark, mainly word_tokenize > functions in nltk.tokenize, working fine with PySpark, please see the below > example' > >>> word_token = word_tokenize(text) > >>> word_token > //['Hello', ',', 'this', 'is', 'testing', 'of', 'nltk', 'in', > 'pyspark', ',', 'mainly', 'word_tokenize', 'functions', 'in', > 'nltk.tokenize', ',', 'working', 'fine', 'with', 'PySpark', ',', 'please', > 'see', 'the', 'below', 'example'] > >>> > {code} > h1.Problem: > When I try to run it using spark in-build method `map` its throwing an error > *ImportError: No module named nltk.tokenize* > {code} > >>> from nltk.tokenize import word_tokenize > >>> rdd = sc.parallelize(["This is first sentence for tokenization", > "second line, we need to tokenize"]) > >> rdd_tokens = rdd.map(lambda sentence : word_tokenize(sentence)) > >> rdd_tokens > // PythonRDD[2] at RDD at PythonRDD.scala:43 > >>> rdd_tokens.collect() > {code} > h2. Fullstack errors: > {code} > >>> from nltk.tokenize import word_tokenize > >>> rdd = sc.parallelize(["This is first sentence for tokenization", > "second line, we need to tokenize"]) > >> rdd_tokens = rdd.map(lambda sentence : word_tokenize(sentence)) > >> rdd_tokens > // PythonRDD[2] at RDD at PythonRDD.scala:43 > >>> rdd_tokens.collect() > 16/05/17 17:06:48 WARN > org.apache.spark.scheduler.TaskSetManager: Lost task 0.0 in stage 2.0 (TID > 16, spark-w-0.c.clean-feat-131014.internal): > org.apache.spark.api.python.PythonException: Traceback (most recent call > last): > File "/usr/lib/spark/python/pyspark/worker.py", line 98, in > main > command = pickleSer._read_with_length(infile) > File "/usr/lib/spark/python/pyspark/serializers.py", line > 164, in _read_with_length > return self.loads(obj) > File "/usr/lib/spark/python/pyspark/serializers.py", line > 422, in loads > return pickle.loads(obj) > ImportError: No module named nltk.tokenize > at > org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:166) > at > org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:207) > at > org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:125) > at > org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:70) > at > org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) > at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) > at > org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66) > at org.apache.spark.scheduler.Task.run(Task.scala:89) > at > org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > 16/05/17 17:06:49 ERROR > org.apache.spark.scheduler.TaskSetManager: Task 0 in stage 2.0 failed 4 > times; aborting job > 16/05/17 17:06:49 WARN > org.apache.spark.scheduler.TaskSetManager: Lost task 1.3 in stage 2.0 (TID > 23, spark-w-0.c.clean-feat-131014.internal): > org.apache.spark.TaskKilledException > at > org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:204) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/usr/lib/spark/python/pyspark/rdd.py", line 771, in > collect > port = > self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd()) > File > "/usr/lib/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, > in __call__ > File "/usr/lib/spark/python/pyspark/sql/utils.py", line 45, > in deco > return f(*a, **kw) > File > "/usr/lib/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in > get_return_value > py4j.protocol.Py4JJavaError: An error occurred while calling > z:org.apache.spark.api.python.PythonRDD.collectAndServe. > : org.apache.spark.SparkException: Job aborted due to stage > failure: Task 0 in stage 2.0 failed 4 times, most recent failure: Lost task > 0.3 in stage 2.0 (TID 22, spark-w-0.c.clean-feat-131014.internal): > org.apache.spark.api.python.PythonException: Traceback (most recent call > last): > File "/usr/lib/spark/python/pyspark/worker.py", line 98, in > main > command = pickleSer._read_with_length(infile) > File "/usr/lib/spark/python/pyspark/serializers.py", line > 164, in _read_with_length > return self.loads(obj) > File "/usr/lib/spark/python/pyspark/serializers.py", line > 422, in loads > return pickle.loads(obj) > ImportError: No module named nltk.tokenize > at > org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:166) > at > org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:207) > at > org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:125) > at > org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:70) > at > org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) > at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) > at > org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66) > at org.apache.spark.scheduler.Task.run(Task.scala:89) > at > org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > Driver stacktrace: > at > org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1431) > at > org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1419) > at > org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1418) > at > scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) > at > scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) > at > org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1418) > at > org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:799) > at > org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:799) > at scala.Option.foreach(Option.scala:236) > at > org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:799) > at > org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1640) > at > org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1599) > at > org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1588) > at > org.apache.spark.util.EventLoop$$anon$1.run(EventLoop.scala:48) > at > org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:620) > at > org.apache.spark.SparkContext.runJob(SparkContext.scala:1832) > at > org.apache.spark.SparkContext.runJob(SparkContext.scala:1845) > at > org.apache.spark.SparkContext.runJob(SparkContext.scala:1858) > at > org.apache.spark.SparkContext.runJob(SparkContext.scala:1929) > at > org.apache.spark.rdd.RDD$$anonfun$collect$1.apply(RDD.scala:927) > at > org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150) > at > org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:111) > at org.apache.spark.rdd.RDD.withScope(RDD.scala:316) > at org.apache.spark.rdd.RDD.collect(RDD.scala:926) > at > org.apache.spark.api.python.PythonRDD$.collectAndServe(PythonRDD.scala:405) > at > org.apache.spark.api.python.PythonRDD.collectAndServe(PythonRDD.scala) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) > at > py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381) > at py4j.Gateway.invoke(Gateway.java:259) > at > py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) > at > py4j.commands.CallCommand.execute(CallCommand.java:79) > at > py4j.GatewayConnection.run(GatewayConnection.java:209) > at java.lang.Thread.run(Thread.java:745) > Caused by: org.apache.spark.api.python.PythonException: > Traceback (most recent call last): > File "/usr/lib/spark/python/pyspark/worker.py", line 98, in > main > command = pickleSer._read_with_length(infile) > File "/usr/lib/spark/python/pyspark/serializers.py", line > 164, in _read_with_length > return self.loads(obj) > File "/usr/lib/spark/python/pyspark/serializers.py", line > 422, in loads > return pickle.loads(obj) > ImportError: No module named nltk.tokenize > at > org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:166) > at > org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:207) > at > org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:125) > at > org.apache.spark.api.python.PythonRDD.compute(PythonRDD.scala:70) > at > org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:306) > at org.apache.spark.rdd.RDD.iterator(RDD.scala:270) > at > org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66) > at org.apache.spark.scheduler.Task.run(Task.scala:89) > at > org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > ... 1 more > >>> > {code} > h1.Main issue at: > {code} > File "/usr/lib/spark/python/pyspark/serializers.py", line 422, in loads > return pickle.loads(obj) > ImportError: No module named nltk.tokenize > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org