zoukankan      html  css  js  c++  java
  • SparkSql中,关于Hive表与Parquet文件的Schema转化兼容

    从表Schema处理角度对比Hive和Parquet,两者主要的区别:

    Hive区分大小写,Parquet不区分大小写;
    Hive允许所有的列为空,而Parquet不允许所有列为空;
    基于上述两点区别,在进行Hive metastore Parquet转换为SpqrkSql Parquet时,需要将两者的结构进行一致化,其一致化规则:

    两者同名字段必须具有相同的数据类型,一致化后的字段必须为Parquet的字段类型,这个规则解决了空值得问题;
    一致化后得schema,只包含Hive metastore中出现的字段,忽略只出现在Parquet的字段;
    只在Hive metastore出现的字段设置为nullable,并加到一致化后的schema中。
    关于元数据,还要注意一点——元数据的刷新。SparkSQL缓存了Parquet元数据以达到良好的性能。当Hive metaStore Parquet表转换为enabled时,表修改后,缓存的元数据并不能刷新,这时必须要手动刷新元数据。

    //手动刷新元数据
    sparkSession.catalog.refreshTable("table_name")
  • 相关阅读:
    设计模式(二)
    关于ICO
    js的中关于类的应用
    接口的实现顺序学习笔记[2]
    接口的继承学习笔记[1]
    设计模式(一)
    四种领域模型
    路径问题!!
    异步调用模式学习记录
    转:四人帮设计模式
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/11466221.html
Copyright © 2011-2022 走看看