Spark SQL Map только один столбец DataFrame - PullRequest
0 голосов
/ 08 мая 2018

Извините за вопрос noob, у меня в SparkSQL есть такой фрейм данных:

id | name | data
----------------
1  | Mary | ABCD
2  | Joey | DOGE
3  | Lane | POOP
4  | Jack | MEGA
5  | Lynn | ARGH

Я хочу знать, как сделать две вещи:

1) использовать функцию scala для одного или нескольких столбцов, чтобы создать другой столбец 2) использовать функцию scala для одного или нескольких столбцов, чтобы заменить столбец

Примеры:

1) Создайте новый логический столбец, который сообщает, начинаются ли данные с A:

id | name | data | startsWithA
------------------------------
1  | Mary | ABCD |        true
2  | Joey | DOGE |       false
3  | Lane | POOP |       false
4  | Jack | MEGA |       false
5  | Lynn | ARGH |        true

2) Заменить столбец данных его нижним регистром:

id | name | data
----------------
1  | Mary | abcd
2  | Joey | doge
3  | Lane | poop
4  | Jack | mega
5  | Lynn | argh

Каков наилучший способ сделать это в SparkSQL? Я видел много примеров того, как вернуть один преобразованный столбец, но я не знаю, как вернуть новый DataFrame со всеми исходными столбцами.

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете использовать withColumn, чтобы добавить новый column или заменить существующий столбец как

val df = Seq(
 (1, "Mary", "ABCD"),
 (2, "Joey", "DOGE"),
 (3, "Lane", "POOP"),
 (4, "Jack", "MEGA"),
 (5, "Lynn", "ARGH")
).toDF("id", "name", "data")


val resultDF = df.withColumn("startsWithA", $"data".startsWith("A"))
  .withColumn("data", lower($"data"))

Если вам нужен отдельный фрейм данных, тогда

val resultDF1 = df.withColumn("startsWithA", $"data".startsWith("A"))
val resultDF2 = df.withColumn("data", lower($"data"))

withColumn заменяетстарое column, если указано то же имя column, и создает новое column, если указано новое имя column.Выход:

+---+----+----+-----------+
|id |name|data|startsWithA|
+---+----+----+-----------+
|1  |Mary|abcd|true       |
|2  |Joey|doge|false      |
|3  |Lane|poop|false      |
|4  |Jack|mega|false      |
|5  |Lynn|argh|true       |
+---+----+----+-----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...