hive不区分大小写,Spark、Parquet都区分
Spark中执行建表语句
CREATE TABLE luna_bar (
ID_NO INT,
USER_NAME STRING
) partitioned by (pt string);
Hive执行相同建表语句
CREATE TABLE luna_foo (
ID_NO INT,
USER_NAME STRING
) partitioned by (pt string);
元数据写入
Hive大小写不敏感,建表的时候会把字段全转成小写再写入metastore数据库。
Spark会保留原来的大小写,写入数据库。
元数据读取
读的时候Hive读到metastore大写字段也会转成小写显示。
Metastore与Parquet元数据问题
# Metastore中是小写的话。可以加这个选项把大小写Parquet都读出来。
spark.sql.hive.convertMetastoreParquet=false #默认是true
spark.sql.hive.caseSensitiveInferenceMode=INFER_AND_SAVE
spark.sql.parquet.mergeSchema=true
INFER_AND_SAVE
INFER_ONLY
NEVER_INFER