Преобразование строки в массив [Int] в столбце Hive с помощью Spark или HivePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Преобразование строки в массив [Int] в столбце Hive с помощью Spark или Hive

Сообщение Anonymous »

У меня есть образец данных в строковом формате ниже в таблице Hive
+----------------------+
| 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")
Я пытался использовать разделение и размер в кадре данных Spark,
сначала я разделил 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, "-")))
есть ли способ привести массив [строка] к массиву [int] в кадре данных
Я хотел бы решить эту проблему без использования UDF

Подробнее здесь: https://stackoverflow.com/questions/785 ... rk-or-hive
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»