zoukankan      html  css  js  c++  java
  • hive外表parquet文件

    外表关联parquet文件
    1. 为什么关联了一次数据文件就不能二次被使用;
    2. 为什么删除了employee,select还是可以而且有数据,1,2可能是一个问题
     
    外表drop只是metadata表内容删除,hdfs的/user/hive/warehouse中依然有此表;但是如果是manage table,则删除后,hdfs里面的文件也会删除,select之后也会报错;所以SQL引擎在处理查询的时候应该是直接到hive的存储位置去执行sql,而不是查metadata表信息。但是后来的测试中发现可能过一会之后,又不能查询了,可能存在缓存,或者metadata同步问题?但是hdfs里面的parquet文件确实没有删除,所以drop掉表之后,再创建其实还是会有之前的通过load data导入数据;
    load data,将会导致数据文件从原始位置移动到hive建表的仓库,除了这种方式之外,还有一种不移动原数据的方式,就是在create external table的时候,声明location
     
    创建parquet存储的外表
    CREATE EXTERNAL TABLE student(id INT,name STRING) STORED AS PARQUETFILE LOCATION /data/parquet/employee.parquet;
     
    hive创建外表和parquet
    今天主要调研一个问题:parquet文件外表关联,字段名称是否可以修改;答案是不可以;select语句还是会根据字段名和parquet文件里面定义的字段名做匹配来显示数据;
    我创建了一个employee对象的json文件,id(String),name,address;
    创建hive外表,id设置INT;select报错;
    创建了一个hive外表,id,name;load data,查询正常,显示id,name;
    创建hive外表,c1,c2;查询不报错,但是显示的数据都是NULL;后来通过alter table指令增加了id和name,增加两列显示对应字段信息;
    这说明查询引擎并不要求外表字段一定要和parquet文件头定义的字段完全一致;但是只要列名和类型一致;外表可以多字段,少字段,但是列名匹配的,类型也要匹配
     
  • 相关阅读:
    面向对象设计大作业第二阶段:图书馆系统
    OO之接口-DAO模式代码阅读及应用
    OO设计-有理数类的设计
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS01——线性表
    c博客06-结构体&文件
    C语言博客作业05——指针
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/8470796.html
Copyright © 2011-2022 走看看