在同一个hive表上进行多次压缩(代码片段)

author author     2022-12-27     570

关键词:

我有一个按年/月分区的Hive表,它包含至少7年的数据。我想要做的是通过Snappy压缩最新的数据(比如1到1岁),但通过更好的压缩技术(如gzip等)来压缩旧数据。如何在Hive中执行此操作?

答案

您可以使用不同的压缩设置覆盖不同的分区。配置压缩编解码器,并使用此编解码器插入要压缩的分区。

对于快活:

set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec; 
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

使用snappy编解码器覆盖分区:

--enable dynamic partitions
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

--use where conditions to limit new data only
insert overwrite table table_name partition(partition_key)
select * from table_name where partition_key <your condition here> ;

对于gzip,请使用GzipCodec:

set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec; 
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec;

使用gzipcodec覆盖分区:

--enable dynamic partitions
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

--use where conditions to limit OLD data only
insert overwrite table table_name partition(partition_key)
select * from table_name where partition_key <your condition here> ;

通过这种方式,您可以为不同的分区使用不同的压缩编解码器。在选择这些表时,您无需指定编解码器。 Hive会自动识别哪个编解码器应该用于解压缩。

当然,这不是关于ORC或镶木地板等自包含文件格式。它们可以有自己的压缩属性。例如orc.compress = SNAPPY

是否可以在 Hive 中的常量列上进行分组?

】是否可以在Hive中的常量列上进行分组?【英文标题】:IsitpossibletogroupbyonaconstantcolumninHive?【发布时间】:2017-04-1707:08:02【问题描述】:我在标准非聚合表列key1和key2上运行Hive查询,如下所示。但我正在根据where条件向每个正在... 查看详情

Hive:在主表上进行增量更新的最佳方式

】Hive:在主表上进行增量更新的最佳方式【英文标题】:Hive:Bestwaytodoincremetalupdatesonamaintable【发布时间】:2016-10-0903:06:44【问题描述】:所以我在Hive中有一个主表,它将存储我的所有数据。我希望能够加载大约每个月的增量数... 查看详情

如何在 hive 查询上进行分组工作(错误:26:25)

】如何在hive查询上进行分组工作(错误:26:25)【英文标题】:Howtomakegroupbyworkonahivequery(error:26:25)【发布时间】:2019-02-0418:14:34【问题描述】:我有一个非常简单的配置单元表,我正在尝试使用GROUPBY子句对其进行查询。当我运... 查看详情

hive常见表结构(代码片段)

...FILE4.ORC5.Parquet6.总结5.表的行存储格式(rowformat) 6.表属性1.压缩1.为什么要压缩2.压缩常见的格式3.压缩性能比较1.外部表当文件已经存在或位于远程位置时,我们可以使 查看详情

hive储存与压缩(代码片段)

​Hive支持的储存格式主要有:textfile(行列存储)、sequencefile(行列存储)、ORC(列式存储)、parquet(列式存储)1.1、行式存储和列式存储​左图为逻辑表,右边第一个为行式存储,第二个为列式存储**行式存储的特点:**查... 查看详情

hive储存与压缩(代码片段)

​Hive支持的储存格式主要有:textfile(行列存储)、sequencefile(行列存储)、ORC(列式存储)、parquet(列式存储)1.1、行式存储和列式存储​左图为逻辑表,右边第一个为行式存储,第二个为列式存储**行式存储的特点:**查... 查看详情

通过 Hive JDBC 在 Tez 上进行 Hive - 错误

】通过HiveJDBC在Tez上进行Hive-错误【英文标题】:HiveoverTezviaHiveJDBC-Error【发布时间】:2015-10-3112:28:25【问题描述】:我正在使用HortonworksHadoopHDP-2.3.2.0-2950HiveoverTez引擎以下2个查询来自Java代码。select*fromascii--效果很好selectcount(*)from... 查看详情

hive文件存储格式和hive数据压缩(代码片段)

...式行存储和列存储二、Hive文件存储格式三、创建语句和压缩一、存储格式行存储和列存储行存储可以理解为一条记录存储一行,通过条件能够查询一整行数据。列存储,以字段聚集存储,可以理解为相同的字段存储在一起。二... 查看详情

css将div中的所有表包装在一起以允许在移动设备上进行水平滚动-cssandjs(代码片段)

查看详情

css将div中的所有表包装在一起以允许在移动设备上进行水平滚动-cssandjs(代码片段)

查看详情

css将div中的所有表包装在一起以允许在移动设备上进行水平滚动-cssandjs(代码片段)

查看详情

mysql:在具有多个外键依赖项的表上进行更新(代码片段)

下面是我在数据库中的关系的简化图:createtableattribute(idintauto_increment,primarykey(id));createtablestate_sample(idintauto_increment,primarykey(id));createtablestate_sample_attribute(state_sample_idint,attribute_idi 查看详情

关于hive当中表的存储和压缩方式总结(代码片段)

这几天研究hive表的存储方式和压缩模式。在这里做一个简单的总结hive表的存储样例:我的表:rp_person_house_loan_info      数据总量:1933776textfile: (1)hive数据表的默认格式,存储方式:行存储。 (2... 查看详情

是否可以在 NOT-a-type 上进行多次调度?

】是否可以在NOT-a-type上进行多次调度?【英文标题】:IsitpossibletodomultipledispatchonNOT-a-type?【发布时间】:2020-05-2811:57:07【问题描述】:为了简化,我尝试编写一个带有两个参数的函数,其中:基础方法接受两个整数作为参数func(... 查看详情

如何编写基于另一个表过滤表的hive查询?(代码片段)

我有两个表,表一有两列a和b,表二有两列c和d。对于表一中的每一行,如果我可以在表二中找到一行,那么a=candsubstring(b,1,3)=substring(d,1,3),然后我将这一行保留在表一中。最后,我想计算表一中有多少行。我尝试在下面写这样的... 查看详情

hive在哪里存储hdfs中的文件?(代码片段)

...个文件夹)将显示表的分区。就我而言,我目前只在date上进行了分区。当我点击此级别的文件夹时,我将看到文件(更多分区将有更多级别)。这些文件是数据实际存储在HDFS上的位置。我没有尝试直接访问这些文件,我假设它... 查看详情

iosswift:在同一个viewcontroller上进行过渡动画(代码片段)

如何在单个视图控制器上获得TransitionAnimation效果(如页面幻灯片)-这样看起来我正在转换到newpage/controller(尽管只有数据在同一视图中发生变化)?例如:我有一个UIViewController,它有Previous和Next按钮。单击“下一步”按钮,“... 查看详情

hive性能优化(代码片段)

...作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗 查看详情