Получите длину, основанную на разбиении столбца в кадре данных в искровой шкале - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть датафрейм со столбцом "примечания", который содержит текст.Я хочу добавить новый столбец, проверив длину столбца примечаний.Например, если столбец примечаний имеет длину == 2, мне нужно взять split ($ "remarks", "") (1).в противном случае я возьму столбец примечаний как есть.

ex: remarks = "xxxx yyyy", я ожидаю, что count должен быть равен 2, и если это так, мне нужно принять yyyy в качестве значения в новом столбце, который мыдобавляем.

Вот код, который я пробовал, но не получаю ожидаемых результатов.

val df1 = df.withColumn("remarks1",when(length(split(col($"remarks")," ") === 2),col($"remarks").split(" ")(1)).otherwise(col($"remarks")))

С приведенным выше кодом я получаю ошибку:

Исключение в потоке "main" org.apache.spark.sql.AnalysisException: невозможно разрешить '(split (remarks,' ') = 2)' из-за несоответствия типов данных: различные типы в '(split (remarks,'') = 2) '(array and int). ;;'Project [примечания № 33, dv № 37, dp № 42, dv1 # 48, сиг № 55, en № 63, es № 72, длина случая ((split (примечания № 33,) = 2)), затем разделение (замечания # 33,) [1] ELSE cefversion # 33 END AS примечания1 # 107]

Может кто-нибудь помочь мне, как мне этого добиться.

Спасибо, малыш

1 Ответ

0 голосов
/ 27 ноября 2018

Я мог бы сузить вопрос, и вот правильный подход:

val df1 = df.withColumn("remarks1", when(size(split($"remarks" ," ")) === 2,split($"remarks"," ")(1)).otherwise(col("remarks")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...