+----------------------+
| col1 |
+----------------------+
| 160-80-40 сек|
| 160-80-40 сек|
| 10-10-10-20-20-30 мин|
| 10-10-10-20-20-30 мин|
| 10-20-30-40-50-60 мин|
| 200-100-100 сек|
| 400 200|
+----------------------+
Я нужно найти сумму массива, максимальное значение, минимальное значение
когда я загружаю эту таблицу улья в искру, она выводит тип данных в строку
Код: Выделить всё
val df = spark.sql("select col1 from table1")
сначала я разделил int и строку с помощью функции разделения
затем снова использовал разделение с помощью «-» " и вычислить сумму массива
так как это строковый тип, возникла ошибка
org.apache.spark.sql.AnalysisException: невозможно разрешить 'sum(split( `new_col1, '-'))' из-за несоответствия типов данных: функция sum требует числовых типов, а не массива;;
Код: Выделить всё
val df1 = df.withColumn("new_col1", split('col1, " ")(0))
Код: Выделить всё
df1.withColumn("new_col2", sum(split('new_col1, "-")))
Я хотел бы решить эту проблему без использования UDF
Подробнее здесь: https://stackoverflow.com/questions/785 ... rk-or-hive