#apache-spark #typeerror
#apache-spark #ошибка типа
Вопрос:
У меня есть большой фрейм данных в pyspark с одним столбцом под названием distance_range, который выглядит следующим образом:
---------------------
|distance_range|
---------------------
| 6-10 mil|
| 2-4 mil|
| 10-15 mil|
| 20-30 mil|
| 15-20 mil|
| 4-6 mil|
| 6-10 mil|
| 0.5-2 mil|
| 2-4 mil|
| 2-4 mil|
| 4-6 mil|
| 30-40 mil|
пока я хочу видеть различные значения этих столбцов и далее выполнять поворот с помощью этого столбца.
df.select('distance_range').distinct().show()
это всегда возвращает ошибку:
Py4JJavaError: An error occurred while calling o1884.showString.
TypeError: unorderable types: NoneType() < float()
этот столбец имеет строковый тип и не имеет нулевого значения
этот столбец был сгенерирован
def dist_range(distance):
elif 0.5 <= distance <2:
return '0.5-2 mil'
elif 2 <= distance <4:
return '2-4 mil'
.
.
.
elif 20 <= distance <30:
return '20-30 mil'
else 30 <= distance <40:
return '30-40 mil'
udf_distance_range = udf(dist_range, StringType())
df = original_df.withColumn("distance_range", udf_distance_range("home_store_dist"))
Комментарии:
1. делали ли вы раньше что-нибудь вроде сортировки или orderby?
2. Без distinct() он вернет все значения distance_range, но если я захочу проверить различные значения, он вернет эту ошибку. Я не выполнял сортировку r orderby для этого метода distinct().
3. Мое первоначальное намерение состояло в том, чтобы выполнить поворот к этому столбцу distance_range после группировки по другим столбцам, но он также вернул эти ошибки. Затем я вернулся к проверке отдельного значения distance_range с помощью df.select(‘distance_range’).distinct().show(), он также возвращает эту ошибку.