Как упорядочить / отсортировать structType на основе имен полей в Java Spark 2.1.1 - PullRequest
0 голосов
/ 07 марта 2019

У меня есть схема structType, мне нужно упорядочить / отсортировать схему на основе имени поля, ниже я делюсь StructType.

StructType schema = StructType(StructField(zzz,StringType,true), 
                               StructField(kkk,StringType,true), 
                               StructField(aaa,StringType,true),
                               StructField(lll,StringType,true))

Я хотел бы получить вышеуказанный structType, как показано ниже

StructType schema = StructType(StructField(aaa,StringType,true), 
                                   StructField(kkk,StringType,true), 
                                   StructField(lll,StringType,true),
                                   StructField(zzz,StringType,true))

1 Ответ

1 голос
/ 07 марта 2019

В Яве

new StructType(Stream.of(schema.fields())
.sorted(Comparator.comparing(StructField::name))
.collect(Collectors.toList()).toArray(new StructField[schema.fields().length]))

В скале Вы можете сделать что-то вроде,

var schema = StructType(Seq(StructField("zzz",StringType,true), 
                            StructField("kkk",StringType,true), 
                            StructField("aaa",StringType,true),
                            StructField("lll",StringType,true)))
def reorderSchema: StructType => StructType = {schema => StructType(schema.sortBy(_.name))}
var newSchema = reorderSchema(schema)
...