динамически генерировать оператор df.select из схемы json в spark - PullRequest
0 голосов
/ 01 октября 2018

Я выбираю столбцы из широкой строки со смещениями, как показано ниже

df2 = df.select( substring(col("a"), 4, 6).as("c")).cast(IntegerType)

Но мне нужно извлечь 1000 столбцов из строки, как я могу сгенерировать оператор выбора с помощью схемы JSON sparkstruct, если я могу предоставитьтакие детали, как имя столбца, тип данных, ширина, начальная и конечная позиции.Также я должен привести несколько столбцов к типу IntergerType или Longtype, но я заметил, что эти поля, усеченные при приведении типа

111111111, будут преобразованы в 1 при преобразовании в IntegerType

1 Ответ

0 голосов
/ 13 ноября 2018

Если вы можете получить свой json в строку, используя configfactory, это всего лишь 3-х шаговый процесс

val config = ConfigFactory.parseFile(new File(configFile))
val jsonColumns = config.getString("name.location")
val jsonColumnsArr = jsonColumns.split(",")
val mappedColNames = jsonColumnsArr.map(name => col(name))
df.select(mappedColNames: _*)

ПРИМЕЧАНИЕ: 1: configFile может быть строкой, которую вы можете получить из аргументов 2: имя и местоположение являютсяобъекты json, указывающие на имена столбцов

...