Hive建表中ORC格式的使用

Hive建表中ORC格式的使用,第1张

refer:https://blog.csdn.net/longshenlmj/article/details/51702343

#Hive建外部External表(外部表external table):

#

#添加分区并加载分区数据

alter table table_name add partition (proc_date='${hivevar:pdate}') location '...'(不改变源数据存储位置)

alter table table_name add if not exsit partition (proc_date='${hivevar:pdate}') location 'hdfs://hdfscluster/'

load data inpath '...' into table table_name partition(proc_date='${hivevar:pdate}')(会将源轿枯纯数据切到hive表指定的路径下)

#删除分区: alter table table_name drop if exists partition(proc_date='${hivevar:pdate}')

#TBLPROPERTIES

实际上就是table properties,TBLPROPERTIES允许开发者定义一些自己的键值对信息。可以对TBLPROPERTIES进行查看和修改(部分可修改)。在TBLPROPERTIES中有一些预定义信息,比如last_modified_user和last_modified_time,其他的一些预定义信息包括:

#tplproperties属性参考

(1)comment:可以用来定义表的描述信息。

(2)hbase.table.name:hive通过 storage handler(暂放)将hive与各种工具联系起来,这是是使用hive接入hbase时,设闭咐置的属性(暂放)。

(3)immutable:顾名思义‘不可变的’,当表的这个属性为true时,若表中无数据时可以insert数据,但是当表已经有数据时,insert *** 作会失败。不可变表用来防止意外更新,避免因脚本错误导致的多次更新,而没有报错。本人实际中还没用到这个属性。

(4)orc.compress:这是orc存储格式表的一个属性,用来指定orc存储的压缩方式(暂放)。

(5) transactional,NO_AUTO_COMPACTION,compactor.mapreduce.map.memory.mb,compactorthreshold.hive.compactor.delta.num.threshold,compactorthreshold.hive.compactor.delta.pct.threshold:这5个属性与hive的事务支持有关,先不做了解。

(6)auto.purge:当设置为ture时,删除或者覆盖的数据会不经过回收站,直接被删除。配置了此属性会败蠢影响到这些 *** 作: Drop Table, Drop Partitions, Truncate Table,Insert Overwrite。

(7)EXTERNAL:通过修改此属性可以实现内部表和外部表的转化。

#

hive读取orc文件行数:避免全分区字段是扮首动态的,必须有至少一个分区字段是指定有值的。

Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中御顷。现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做个试验将该表中的数据查询出来插入到另一个表employe。

ENT:按ENTER键一下:

\^:代表CTRL键,如要按组合键如CTRL+S:\^S;(其他如此类推)。

\%:代表ALT键,如要按组合键如ALT+F:\%F;(其他如此类推)。

\{}:代表按下键盘上功能键,之于要什么功厅拆数能键就在{}中写,如要按F1键:\{F1};向下的箭头键:\{DOWN}(其他如此类推)。

\^{F4}:代表按下Ctrl+F4键。

*ML(684,120):代表按下鼠标左键,括号中的数字代表鼠标在屏幕上的坐标;(注:我们可以在主窗口把鼠标的位置放好,然后通过ALT+TAB键的 *** 作切换到DATALOAD的窗口按下*+M+L就可以比较精确地定位鼠标)。

一、ORC文件格式

        ORC文件也是以二进制方式存储的,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的。ORC的文件结构如下图

          在ORC文件中保存了三个层级的统计信息,分别为 文件级别、stripe级别和row group 级别的,他们都可以用来根据Search ARGuments( 谓词下推条件 )判断是否可以跳过某些数据,在统计信尺灶息中都包含成员数和是否有null值,并且对于不同类型的数据设置一些特定的统计信息。

(1)file level

在ORC文件的末尾会记录文件级别的统计信息,会记录整个文件中columns的统祥隐计信息。这些信息主要用于查询的优化,也可以为一些简单的聚合查询比如max, min, sum输出结果。

(2)stripe level

ORC文件会保存每谨困厅个字段stripe级别的统计信息,ORC reader使用这些统计信息来确定对于一个查询语句来说,需要读入哪些stripe中的记录。比如说某个stripe的字段max(a)=10,min(a)=3,那么当where条件为a >10或者a <3时,那么这个stripe中的所有记录在查询语句执行时不会被读入。

(3)row level

为了进一步的避免读入不必要的数据,在逻辑上将一个 column的index以一个给定的值(默认为10000,可由参数配置)分割为多个index组(也就是对每一列的分组数据建立索引,这样能近一步减少不必要的查询) 。以10000条记录为一个组,对数据进行统计(比如min,max等)。Hive查询引擎会将where条件中的约束传递给ORC reader,这些reader根据组级别的统计信息,过滤掉不必要的数据。如果该值设置的太小,就会保存更多的统计信息,用户需要根据自己数据的特点权衡一个合理的值

详细参考:https://www.cnblogs.com/ittangtang/p/7677912.html


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12169601.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存