как решить Py4JJavaError в PySpark

#python #pyspark #py4j

#python #pyspark #py4j

Вопрос:

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

Я работаю с базой данных, найденной здесь: https://www.kaggle.com/mlg-ulb/creditcardfraud

в сообщениях об ошибках я думаю, что это самая большая проблема: первая строка в RDD пуста, как мне это решить (если это действительно проблема); Я совсем новичок в pyspark.

код, который создает эту ошибку:

 rdd_ml = df.rdd.map(lambda x : (x[0], DenseVector(x[1:])))
df_ml = spark.createDataFrame(rdd_ml, ["label", "features"])
df_ml.show()
 

спасибо, если вы можете мне помочь.

 ---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
<ipython-input-16-ca563bef5392> in <module>
      6 
      7 rdd_ml = df.rdd.map(lambda x : (x[0], DenseVector(x[1:])))
----> 8 df_ml = spark.createDataFrame(rdd_ml, ["label", "features"])
      9 df_ml.show()
     10 

~anaconda3libsite-packagespysparksqlsession.py in createDataFrame(self, data, schema, samplingRatio, verifySchema)
    673             return super(SparkSession, self).createDataFrame(
    674                 data, schema, samplingRatio, verifySchema)
--> 675         return self._create_dataframe(data, schema, samplingRatio, verifySchema)
    676 
    677     def _create_dataframe(self, data, schema, samplingRatio, verifySchema):

~anaconda3libsite-packagespysparksqlsession.py in _create_dataframe(self, data, schema, samplingRatio, verifySchema)
    696 
    697         if isinstance(data, RDD):
--> 698             rdd, schema = self._createFromRDD(data.map(prepare), schema, samplingRatio)
    699         else:
    700             rdd, schema = self._createFromLocal(map(prepare, data), schema)

~anaconda3libsite-packagespysparksqlsession.py in _createFromRDD(self, rdd, schema, samplingRatio)
    484         """
    485         if schema is None or isinstance(schema, (list, tuple)):
--> 486             struct = self._inferSchema(rdd, samplingRatio, names=schema)
    487             converter = _create_converter(struct)
    488             rdd = rdd.map(converter)

~anaconda3libsite-packagespysparksqlsession.py in _inferSchema(self, rdd, samplingRatio, names)
    458         :class:`pyspark.sql.types.StructType`
    459         """
--> 460         first = rdd.first()
    461         if not first:
    462             raise ValueError("The first row in RDD is empty, "

~anaconda3libsite-packagespysparkrdd.py in first(self)
   1586         ValueError: RDD is empty
   1587         """
-> 1588         rs = self.take(1)
   1589         if rs:
   1590             return rs[0]

~anaconda3libsite-packagespysparkrdd.py in take(self, num)
   1566 
   1567             p = range(partsScanned, min(partsScanned   numPartsToTry, totalParts))
-> 1568             res = self.context.runJob(self, takeUpToNumLeft, p)
   1569 
   1570             items  = res

~anaconda3libsite-packagespysparkcontext.py in runJob(self, rdd, partitionFunc, partitions, allowLocal)
   1225         # SparkContext#runJob.
   1226         mappedRDD = rdd.mapPartitions(partitionFunc)
-> 1227         sock_info = self._jvm.PythonRDD.runJob(self._jsc.sc(), mappedRDD._jrdd, partitions)
   1228         return list(_load_from_socket(sock_info, mappedRDD._jrdd_deserializer))
   1229 

~anaconda3libsite-packagespy4jjava_gateway.py in __call__(self, *args)
   1307 
   1308         answer = self.gateway_client.send_command(command)
-> 1309         return_value = get_return_value(
   1310             answer, self.gateway_client, self.target_id, self.name)
   1311 

~anaconda3libsite-packagespysparksqlutils.py in deco(*a, **kw)
    109     def deco(*a, **kw):
    110         try:
--> 111             return f(*a, **kw)
    112         except py4j.protocol.Py4JJavaError as e:
    113             converted = convert_exception(e.java_exception)

~anaconda3libsite-packagespy4jprotocol.py in get_return_value(answer, gateway_client, target_id, name)
    324             value = OUTPUT_CONVERTER[type](answer[2:], gateway_client)
    325             if answer[1] == REFERENCE_TYPE:
--> 326                 raise Py4JJavaError(
    327                     "An error occurred while calling {0}{1}{2}.n".
    328                     format(target_id, ".", name), value)

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 2.0 failed 1 times, most recent failure: Lost task 0.0 in stage 2.0 (TID 3) (10.242.2.8 executor driver): org.apache.spark.SparkException: Python worker failed to connect back.