При написании набора данных с использованием Spark, как изменить имена столбцов в верблюжьей оболочке в нижний регистр с подчеркиванием? - PullRequest
0 голосов
/ 12 мая 2018

Я использую структурированную потоковую передачу в Spark 2.3.0 для записи набора данных в S3.Мой потоковый запрос выглядит так:

StreamingQuery query = ds.writeStream().format("parquet").outputMode(OutputMode.Append())
                                       .option("checkpointLocation", "s3://my-checkpoint-location/" )
                                       .option("path", "s3://my-output-data-location")
                                       .partitionBy("my-partition-column-name")
                                       .start();

Приведенный выше код работает отлично.Имена столбцов моего набора данных: firstName и lastName.Я хочу, чтобы мои выходные данные / файл паркета имели имена столбцов first_name и last_name.Есть ли простой способ сделать это, добавив еще один вариант?Если нет, то как проще всего это сделать, если имена столбцов неизвестны во время запуска этого фрагмента кода?

1 Ответ

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

Вы можете сделать что-то вроде этого:

...
    for (colName <- df.columns)
      df = df.withColumnRenamed(colName, camelToUnderscores(colName))
...

def camelToUnderscores(name: String) = "[A-Z\\d]".r.replaceAllIn(name, {m =>
    "_" + m.group(0).toLowerCase()
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...