我正在从Hive表中读取数据,然后尝试使用从其他列派生的额外列来丰富它。 但是我遇到了Spark更改我的架构并按名称排序所有列的问题。
在调用withColumn()并使用我的富集类对其进行编码后,架构是正确的,但每当我调用map()时,架构都会更改,并且列的顺序是错误的。如何告诉Spark保持列的原始顺序?
session.table("myTable")
.as(Encoders.bean(Base.class))
.withColumn("enrichedColumn", lit(""))
.as(Encoders.bean(Enriched.class))
.map(enriched -> enriched.enrich(), Encoders.bean(Enriched.class))
.printSchema();