Spark - Как определить и удалить нулевые строки - PullRequest
0 голосов
/ 21 июня 2019

Я сталкиваюсь с проблемой, когда вижу следующее сообщение об ошибке - в основном около null:

An error occurred while calling o4013.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 275.0 failed 4 times, most recent failure: Lost task 0.3 in stage 275.0 (TID 415, w-----pp.net, executor 1): scala.MatchError: null (of class org.json.JSONObject$Null)

Итак, я сначала собираю данные из моей БД - это объектследовательно, длинный выбор:

myData = results.select("music.metadata.artist.*")

затем:

print(myData.select("*").show())

Исходя из этой ошибки, я предполагаю, что есть некоторые null данные поступают, поэтому, чтобы удалить их, я попытался поместить следующую строку, прежде чем сделать show()

myData.na.drop()

Однако это не помогает, и я продолжаю получать ту же ошибку.

Кроме этого, как я могу точно видеть, какие данные поступают, когда я задаю myData?

В противном случае я действительно на правильном пути, основываясь на этом сообщении об ошибке?

Любая помощь / идеи будут оценены.

Спасибо.

1 Ответ

1 голос
/ 21 июня 2019

Ошибка возникает при попытке извлечь myData из results, как видно из его текста.Я бы предположил, что у вас есть ошибка в схеме.Чтобы понять, почему возникает ошибка при вызове show, нам нужно взглянуть на дихотомию действия преобразования в Spark.

Материал, который вы делаете с помощью Spark, можно разделить на преобразования и действия.По сути, действия - это вещи, которые позволят вам увидеть фактические результаты того, что вы делали, например, show, сохранение на диск и сбор данных в драйвер.

Преобразования - это все остальное, в частности, select операторы.Пока действие не обработано, преобразования просто складываются, что приводит к возникновению ошибки только при вызове show, несмотря на возможность того, что оно было вызвано более ранним преобразованием.

В качестве отступленияне нужно печатать результат show, который равен None.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...