gpt4 book ai didi

hadoop - Hive 'alter table concatenate' 是如何工作的?
转载 作者:可可西里 更新时间:2023-11-01 15:10:52 25 4
gpt4 key购买 nike

我有 n(large) 个小型 orc 文件,我想将它们合并到 k(small) 个大型 orc 文件中。

这是在 Hive 中使用 alter table table_name concatenate 命令完成的。

我想了解 Hive 是如何实现的。如果需要,我希望使用 Spark 进行任何更改来实现这一点。

任何指针都会很棒。

最佳答案

根据 AlterTable/PartitionConcatenate :

如果表或分区包含很多小的RCFiles或ORC文件,那么上面的命令会将它们合并成更大的文件。在 RCFile 的情况下,合并发生在 block 级别,而对于 ORC 文件,合并发生在 strip 级别,从而避免了解压缩和解码数据的开销。

还有 ORC Stripes :

ORC 文件的主体由一系列条纹组成。条纹是大(通常 ~200MB)并且彼此独立,并且通常由不同的任务处理。柱状的定义特征存储格式是每一列的数据是分开存储的并且从文件中读取数据应该与读取的列数。在 ORC 文件中,每一列都存储在几个流中,这些流被存储在文件中彼此相邻。例如,整数列是表示为两个流 PRESENT,每个流使用一个位如果值为非空则记录值,DATA记录非空值。如果 strip 中所有列的值都非空, strip 中省略了 PRESENT 流。对于二进制数据,ORC使用三个流 PRESENT、DATA 和 LENGTH,存储长度每个值。每种类型的详细信息将在以下小节。

要在 Spark 中实现,您可以使用 SparkSQL在 Spark 上下文的帮助下:

scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

scala> sqlContext.sql("Your_hive_query_here")

关于hadoop - Hive 'alter table <table name> concatenate' 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41820925/

25 4 0