Новинка от искры.искра: от строки к элементу
Я хотел бы сделать некоторую трансформацию в столбце «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»?
Благодаря @LostInOverflow. Мои databricks только что умерли, и я не могу попробовать это сейчас, но попробую, когда это сработает снова. Вопрос: вместо использования «1» я могу каким-то образом использовать имя столбца? – MichM
Как и 'getAs [Seq [String]] (« some_name »). ToList' Я думаю. –
Ответ, который я пробовал, дал ошибку: 'type mismatch; найдено: java.util.List [String] required: scala.collection.immutable.List [String] '. Однако ваш код в комментарии работает. Вы хотите отредактировать код в своем первоначальном ответе, сохранив «(1)» в качестве альтернативного правильного ответа, чтобы я мог его принять? – MichM