#apache-spark #pyspark #jupyter-notebook
#apache-spark #pyspark #jupyter-ноутбук
Вопрос:
после предварительной обработки моих данных я получил окончательные данные
------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
|Acorn_grouped| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12|
------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
| 1|711.0|607.0|567.0|453.0|364.0|303.0|304.0|296.0|320.0|420.0|618.0|637.0|
| 0|254.0|228.0|248.0|211.0|225.0|231.0|222.0|239.0|210.0|244.0|148.0|239.0|
| 0|133.0|116.0|115.0|126.0|118.0|118.0|136.0|151.0| 99.0|102.0|120.0|114.0|
------------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
Я следовал некоторым руководствам и написал этот код
from pyspark.ml.feature import VectorAssembler
vecAssembler = VectorAssembler(inputCols=
["Acorn_grouped","1","2","3","4","5","6","7","8","9","10","11","12"], outputCol="features")
new_df = vecAssembler.transform(data)
new_df.show()
и я получил ошибку в строке
new_df.show()
ошибка :
---------------------------------------------------------------------------
Py4JJavaError Traceback (most recent call last)
<ipython-input-29-f51d3e043cb1> in <module>
----> 1 new_df.show()
~anaconda3libsite-packagespysparksqldataframe.py in show(self, n, truncate, vertical)
438 """
439 if isinstance(truncate, bool) and truncate:
--> 440 print(self._jdf.showString(n, 20, vertical))
441 else:
442 print(self._jdf.showString(n, int(truncate), vertical))
~anaconda3libsite-packagespy4jjava_gateway.py in __call__(self, *args)
1302
1303 answer = self.gateway_client.send_command(command)
-> 1304 return_value = get_return_value(
1305 answer, self.gateway_client, self.target_id, self.name)
1306
~anaconda3libsite-packagespysparksqlutils.py in deco(*a, **kw)
126 def deco(*a, **kw):
127 try:
--> 128 return f(*a, **kw)
129 except py4j.protocol.Py4JJavaError as e:
130 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 o176.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 18 in stage 82.0 failed 1
times, most recent failure: Lost task 18.0 in stage 82.0 (TID 3309, DESKTOP-7ETJDI1, executor
driver): org.apache.spark.SparkException: Failed to execute user defined
function(VectorAssembler$Lambda$3412/0x00000001013eb840:
(struct<Acorn_grouped_double_VectorAssembler_9457afd2c7aa:double,1:double,2:double,3:double,
4:double,5:d ouble,6:double,7:double,8:double,9:double,10:double,11:double,12:double>) =>
struct<type:tinyint,size:int,indices:array<int>,values:array<double>>)
кто-нибудь может помочь мне понять ошибку или исправить ее?
ps: что меня удивило, так это то, что когда я использовал данные из учебника, который похож на мой, он работает
Комментарии:
1. Скорее всего, это вызвано нулевыми значениями в фрейме данных. Векторный ассемблер не может принимать нули.
2. @mck я попробовал эту функцию для удаления нулей в фрейме данных и повторно выполнил код, но у меня все та же ошибка
3. затем, пожалуйста, покажите полную обратную трассировку ошибок — недостаточно информации для отладки этой проблемы.
4. @mck я попытался выполнить код сейчас в новой неотбуке, он работает, я не знаю, почему ххххх, но, наконец, это происходит, все равно спасибо