Правильная настройка py4j с помощью jupyter-notebook - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь настроить свечу с помощью jupyter-notebook. Я следовал онлайн-учебнику, и он, кажется, работает, за исключением того, что я продолжаю получать ошибки, связанные с py4j.

Я пробовал пару разных примеров кода, и некоторые строки дают мне ошибки. Я думал, что это из-за загрузки в текстовом файле неправильно, но я не думаю, что это так.

from pyspark import SparkContext, SparkConf


conf = SparkConf().setAppName("primeNumbers").setMaster("local[*]")
sc = SparkContext(conf = conf)

lines = sc.textFile("in/prime_nums.text")
numbers = lines.flatMap(lambda line: line.split("\t"))

validNumbers = numbers.filter(lambda number: number)

intNumbers = validNumbers.map(lambda number: int(number))

print("Sum is: {}".format(intNumbers.reduce(lambda x, y: x + 
y)))'''

Вот ошибка, более или менее произошедшая в последней строке:

Py4JJavaError                             Traceback (most recent 
call last)
<ipython-input-1-d6e1c80db92a> in <module>()
 14 print("hi")
 15 
---> 16 print("Sum is: {}".format(intNumbers.reduce(lambda x, y: x 
+ y)))

/usr/local/opt/spark/spark-2.3.3-bin- 
hadoop2.7/python/pyspark/rdd.pyc in reduce(self, f)
840             yield reduce(f, iterator, initial)
841 
--> 842         vals = self.mapPartitions(func).collect()
843         if vals:
844             return reduce(f, vals)

/usr/local/opt/spark/spark-2.3.3-bin- 
hadoop2.7/python/pyspark/rdd.pyc in collect(self)
812         """
813         with SCCallSiteSync(self.context) as css:
--> 814             sock_info = 
self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
815         return list(_load_from_socket(sock_info, 
self._jrdd_deserializer))
816 

/usr/local/lib/python2.7/site-packages/py4j/java_gateway.pyc in 
__call__(self, *args)
   1284         answer = self.gateway_client.send_command(command)
   1285         return_value = get_return_value(
    -> 1286             answer, self.gateway_client, self.target_id, self.name)
   1287 
   1288         for temp_arg in temp_args:

/usr/local/lib/python2.7/site-packages/py4j/protocol.pyc in get_return_value(answer, gateway_client, target_id, name)
326                 raise Py4JJavaError(
327                     "An error occurred while calling {0}{1} 
{2}.\n".
--> 328                     format(target_id, ".", name), value)
329             else:
330                 raise Py4JError(

Py4JJavaError: An error occurred while calling 
z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: java.lang.IllegalArgumentException
at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
at org.apache.xbean.asm5.ClassReader.<init>(Unknown Source)
at org.apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:46)
at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:449)
at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:432)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
at scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103)

и еще много таких строк

Выход должен быть просто числом

...