createDataFrame (pyspark) генерирует странную ошибку (ошибка py4j) - PullRequest
0 голосов
/ 09 января 2020

Я написал эти простые 4 строки кода:

import pyspark
from pyspark.sql import SparkSession
spa = SparkSession.builder.getOrCreate()

spa.createDataFrame([(1,2,3)], ["count"])

, но эта функция createDataFrame генерирует эту огромную ошибку:

Отслеживание Py4JError (последний вызов был последним) в 3 spa = SparkSession.builder.getOrCreate () 4 ----> 5 spa.createDataFrame ([(1,2,3)], ["count"])

c: \ users \ hp \ appdata \ local \ Programs \ python \ python37 \ lib \ site-packages \ pyspark \ sql \ session.py в createDataFrame (self, data, schema, samplingRatio, verifySchema) 690 else: 691 rdd, schema = self._createFromLocal (map (подготовка, данные), схема) -> 692 jrdd = self._jvm.SerDeUtil.toJavaArray (rdd._to_java_object_rdd ()) 693 jdf = self._jsparkSession.applySchemaToPythonRDD (jrdd.rdd (), схема) * 10. ) 694 df = DataFrame (jdf, self._wrapped)

c: \ users \ hp \ appdata \ local \ Programs \ python \ python37 \ lib \ site-packages \ pyspark \ rdd.py в _to_java_object_rdd (self) 2294 "" "2295 rdd = self._pickled () -> 2296 return self.ctx._jvm.SerDeUtil.pythonTo Java (rdd._jrdd, True) 2297 2298 def countAppro x (self, timeout, trust = 0.95):

c: \ users \ hp \ appdata \ local \ Programs \ python \ python37 \ lib \ site-packages \ pyspark \ rdd.py в _jrdd ( self) 2472
self._jrdd_deserializer, профилировщик) 2473 python_rdd = self.ctx._jvm.PythonRDD (self._prev_jrdd.rdd (), wrapped_fun c, -> 2474 self.preservedPartitioning) 2475 self._jthonddval. asJavaRDD () 2476

c: \ users \ hp \ appdata \ local \ Programs \ python \ python37 \ lib \ site-packages \ py4j \ java_gateway.py в , вызов (self , * args) 1523 answer = self._gateway_client.send_command (команда) 1524
return_value = get_return_value (-> 1525 ответ, self._gateway_client, None, self._fqn) 1526 1527 для temp_arg в temp_args:

* 10 *c: \ users \ hp \ appdata \ local \ Programs \ python \ python37 \ lib \ site-packages \ pyspark \ sql \ utils.py in deco (* a, ** kw) 61 def deco (* a, ** kw): 62 try: ---> 63 возвращает f (* a, ** kw) 64 за исключением py4j.protocol.Py4JJavaError как e: 65 s = e.java_exception.toString ()

c: \ пользователи \ л \ AppData \ local \ Programs \ python \ python37 \ lib \ site-packages \ py4j \ protocol.py в get_return_value (ответ, gateway_client, target_id, name) 330 повысить Py4JError (331 "При вызове {0} {1} {2} произошла ошибка , Трассировка: \ n {3} \ n ". -> 332 формат (target_id,". ", Имя, значение)) 333 еще: 334 повысить Py4JError (

> Py4JError: Произошла ошибка во время вызова None.org. apache .spark.api. python .PythonRDD. Трассировка: py4j.Py4JException: конструктор org. apache .spark.api. python .PythonRDD ([класс org. apache .spark.rdd.ParallelCollectionRDD, класс org. apache .spark.api. python .PythonFunction, класс java .lang.Boolean]) не существует в py4j.reflection.ReflectionEngine.getConstructor (ReflectionEngine. java: 179) в py4j.reflection.ReflectionEngine.getConstructor (ReflectionEngine. java: 196) в py4j.Gateway.invoke (Gateway. java: 237) в py4j.commands.ConstructorCommand.invokeConstructor (ConstructorCommand. java) : 80) в py4j.commands.ConstructorCommand.execute (ConstructorCommand. java: 69) в py4j.GatewayConnection.run (GatewayConnection. java: 238) в java .lang.Thread.run (поток. * 1055). *: 748)

Почему это происходит? Этот код буквально такой же, как другие учебные пособия, и он работает не там ...

1 Ответ

0 голосов
/ 09 января 2020

Попробуйте это работает. Поместите запятую после значений при инициализации.

import pyspark
from pyspark.sql import SparkSession

spa = SparkSession.builder.getOrCreate()
df = spa.createDataFrame(sc.parallelize([(1,), (2,), (3,)]), ("count",),)

Вывод:

+-----+
|count|
+-----+
|    1|
|    2|
|    3|
+-----+

Надеюсь, это поможет!

...