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")
  • 相关阅读:
    关于页面跳转
    javascript之继承
    ubuntu+mysql+php+apache2+wordpress建站全记录
    Vue双向绑定原理解析
    Excel导入
    Excel文件下载(导出)
    IDEA创建Activiti工作流(集成的方式,生成表)
    git基本操作
    git中分支操作
    整合dubbo的依赖
  • 原文地址:https://www.cnblogs.com/SysoCjs/p/11466221.html
Copyright © 2011-2022 走看看