#python #apache-spark #bigdata
Вопрос:
Как я могу исправить эту ошибку? Я получаю ошибку при выполнении последней ячейки, где я допустил ошибку? есть ли что-нибудь в моей версии программы? или что-то подобное?
введите описание изображения здесь
def count_examples(Data): count = Data.map(lambda labelPoint: (labelPoint.label,1)).reduceByKey(lambda x,y: x y) return count.collect() counts = count_examples(Data) counts3 = count_examples(sc.parallelize(Data.take(3))) assert type(counts3) == list, 'Incorrect return type' assert type(counts3[0]) == tuple, 'Incorrect return type' assert type(counts3[0][0]) == float, 'Incorrect return type' assert type(counts3[0][1]) == int, 'Incorrect return type' assert counts3[0][0] == 5.0, 'Incorrect return value' assert counts3[0][1] == 2, 'Incorrect return value' AssertionError Traceback (most recent call last) lt;ipython-input-24-9c21c32429c5gt; in lt;modulegt;() ----gt; 1 assert counts3[0][0] == 5.0, 'Incorrect return value' 2 assert counts3[0][1] == 2, 'Incorrect return value' AssertionError: Incorrect return value
Ответ №1:
Это не ошибка, а ошибка утверждения. В принципе, здесь происходит то, что значение, сохраненное в counts3[0][0]
, не равно 5.0
Вы можете легко исправить это в два шага
- знайте, каково ожидаемое значение, поэтому просто измените свой код на
assert counts3[0][0] == 5.0, f"Incorrect return value, actual is {counts3[0][0]}"
Когда вы запустите этот код, он снова завершится ошибкой, но выведет точное ожидаемое значение
- измените значение в утверждении на ожидаемое значение с вышеуказанного шага
Комментарии:
1. вы правы ==2.0, а не 5.0, но, к сожалению, я не могу изменить эту ячейку. есть ли какое-то другое решение?
2. @HawarDizayee, к сожалению, единственным другим вариантом было бы изменить входные данные таким образом, чтобы
counts3[0][0]
они были равны5.0
. в противном случае вам придется избавиться от оператора assert