Scala Databricks: приведение всех столбцов bigint к двойному - PullRequest
0 голосов
/ 28 июня 2019

Я имею в виду этот вопрос: Приведение кратных столбцов в кадре данных

У меня есть кадр данных со многими столбцами.К некоторым начальным столбцам (скажем, 5) не следует прикасаться, поскольку они являются идентификатором, именем и т. Д.

Начиная со столбца 6 и далее, я хотел бы привести столбец, если его тип данных равен от bigint до double Типы данных.

В настоящее время я использую:

val df2 = df.withColumn("col_name", df.col("col_name").cast(DataTypes.DoubleType))

для каждого столбца, и это действительно отнимает много времени.

1 Ответ

1 голос
/ 28 июня 2019

1 - исключить первые 5 столбцов, найти все последующие столбцы с типом BigInt / Long

2 - Свернуть список столбцов BigInt, изменив их на Double

val df2 = df.schema.drop(5).collect{case c if c.dataType == DataTypes.LongType => c.name}.foldLeft(df){(acc, nxt) => acc.withColumn(nxt, acc.col(nxt).cast(DataTypes.DoubleType))}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...