Spark 版本:Amazon EMR 5.24.0 上的 2.4.2
我有一个由 S3 Parquet 目录支持的 Glue 目录表。Parquet 文件具有区分大小写的列名(如lastModified
)。不管我做什么,lastmodified
在使用 Spark 读取 Glue Catalog 表时,我会得到小写的列名 ( ):
for {
i <- Seq(false, true)
j <- Seq("NEVER_INFER", "INFER_AND_SAVE", "INFER_ONLY")
k <- Seq(false, true)
} {
val spark = SparkSession.builder()
.config("spark.sql.hive.convertMetastoreParquet", i)
.config("spark.sql.hive.caseSensitiveInferenceMode", j)
.config("spark.sql.parquet.mergeSchema", k)
.enableHiveSupport()
.getOrCreate()
import spark.sql
val df = sql("""SELECT * FROM ecs_db.test_small""")
df.columns.foreach(println)
}
[1] https://medium.com/@an_chee/why-using-mixed-case-field-names-in-hive-spark-sql-is-a-bad-idea-95da8b6ec1e0
[2] https:// spark.apache.org/docs/latest/sql-data-sources-parquet.html