Набор данных Spark - Как создать новый столбец, изменив существующее значение столбца - PullRequest
0 голосов
/ 31 октября 2018

У меня есть набор данных, как показано ниже

Dataset<Row> dataset = ...
dataset.show()

| NAME | DOB      |
+------+----------+
| John | 19801012 |
| Mark | 19760502 |
| Mick | 19911208 |

Я хочу преобразовать его в ниже (отформатированный DOB)

| NAME | DOB        |
+------+------------+
| John | 1980-10-12 |
| Mark | 1976-05-02 |
| Mick | 1991-12-08 |

Как я могу это сделать? По сути, я пытаюсь выяснить, как манипулировать существующими значениями столбцов в общем виде.

Я пытался использовать dataset.withColumn, но не мог понять, как этого добиться.

Ценю любую помощь.

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

С функциями "substring" и "concat":

df.withColumn("DOB_FORMATED",
  concat(substring($"DOB", 0, 4), lit("-"), substring($"DOB", 5, 2), lit("-"), substring($"DOB", 7, 2)))
0 голосов
/ 31 октября 2018

Загрузить данные в фрейм данных (deltaData) и просто использовать следующую строку

deltaData.withColumn("DOB", date_format(to_date($"DOB", "yyyyMMdd"), "yyyy-MM-dd")).show()
0 голосов
/ 31 октября 2018

Предполагая, что DOB является строкой, вы можете написать UDF

def formatDate(s: String): String {
  // date formatting code
}

val formatDateUdf = udf(formatDate(_: String))

ds.select($"NAME", formatDateUdf($"DOB").as("DOB"))
...