0

Новинка от искры.искра: от строки к элементу

Я хотел бы сделать некоторую трансформацию в столбце «wordList» искры DataFrame, df, типа org.apache.spark.sql.DataFrame = [id: string, wordList: array<string>].

Я использую данныеBricks. ДФ выглядит следующим образом:

+--------------------+--------------------+ 
|     id|   wordList| 
+--------------------+--------------------+ 
|08b0a9b6-3b9a-47a...|     [a]| 
|23c2ef79-8dce-4ad...|[ag, adfg, asdfgg...| 
|26a7682f-2ce6-4eb...|[ghe, gener, ghee...| 
|2ab530b5-04bc-463...|[bap, pemm, pava,...| 
+--------------------+--------------------+ 

Более конкретно, я определил функцию shrinkList (ПР: Список [String]): Список [String], которая принимает список и возвращает короткий список, и хотели бы применять его на столбец wordList. Вопрос в том, как преобразовать строку в список?

df.select("wordList").map(t => shrinkList(t(1))) дают ошибку: type mismatch; found : Any required: List[String]

Кроме того, я не уверен, что "т (1)" здесь. Я бы предпочел использовать имя столбца вместо индекса, если порядок столбцов изменится в будущем. Но я не могу заставить t $ «wordList» или t.wordList или t («wordList») работать. Итак, вместо того, чтобы использовать t (1), какой селектор можно использовать для выбора столбца «wordList»?

ответ

1

Try:

df.select("wordList").map(t => shrinkList(t.getSeq[String](0).toList)) 

или

df.select("wordList").map(t => shrinkList(t.getAs[Seq[String]]("wordList").toList)) 
+0

Благодаря @LostInOverflow. Мои databricks только что умерли, и я не могу попробовать это сейчас, но попробую, когда это сработает снова. Вопрос: вместо использования «1» я могу каким-то образом использовать имя столбца? – MichM

+0

Как и 'getAs [Seq [String]] (« some_name »). ToList' Я думаю. –

+0

Ответ, который я пробовал, дал ошибку: 'type mismatch; найдено: java.util.List [String] required: scala.collection.immutable.List [String] '. Однако ваш код в комментарии работает. Вы хотите отредактировать код в своем первоначальном ответе, сохранив «(1)» в качестве альтернативного правильного ответа, чтобы я мог его принять? – MichM

Смежные вопросы