hive不区分大小写,Spark、Parquet都区分
Spark中执行建表语句

  1. CREATE TABLE luna_bar (
  2. ID_NO INT,
  3. USER_NAME STRING
  4. ) partitioned by (pt string);

image.png

Hive执行相同建表语句

  1. CREATE TABLE luna_foo (
  2. ID_NO INT,
  3. USER_NAME STRING
  4. ) partitioned by (pt string);

image.png

元数据写入

Hive大小写不敏感,建表的时候会把字段全转成小写再写入metastore数据库。
Spark会保留原来的大小写,写入数据库。

元数据读取

读的时候Hive读到metastore大写字段也会转成小写显示。

Metastore与Parquet元数据问题

  1. # Metastore中是小写的话。可以加这个选项把大小写Parquet都读出来。
  2. spark.sql.hive.convertMetastoreParquet=false #默认是true
  3. spark.sql.hive.caseSensitiveInferenceMode=INFER_AND_SAVE
  4. spark.sql.parquet.mergeSchema=true
  5. INFER_AND_SAVE
  6. INFER_ONLY
  7. NEVER_INFER

https://medium.com/@an_chee/why-using-mixed-case-field-names-in-hive-spark-sql-is-a-bad-idea-95da8b6ec1e0

https://www.cnblogs.com/zhou-jun/p/10195710.html