从压缩文件向Hive加载数据的推荐方法是什么?

时间:2015-09-16 18:18:21

标签: hadoop hive

我在文档中遇到this page on CompressedStorage,让我有点困惑。

根据该页面,如果我的输入文件(在AWS s3上)是压缩的gzip文件,我应首先使用选项STORED AS TextFile加载数据,然后使用选项STORED AS SEQUENCEFILE创建另一个表,将数据插入其中。这真的是推荐的方式吗?

或者我可以直接将数据加载到带有STORED AS SEQUENCEFILE选项的表集中吗?

如果前一种方法确实是推荐的方法,那么 为什么 会有进一步的解释吗?

1 个答案:

答案 0 :(得分:0)

您必须以其格式加载数据。这意味着,如果您的文件是文本文件,那么您应该将它们加载为TextFile,如果您的文件是序列文件,则将它们加载为SEQUENCEFILE。

对于Hive,压缩格式无关紧要,因为它会使用文件的扩展名作为参考在飞行中解压缩(如果在Hadoop中正确配置了压缩编解码器)。

您正在分享的页面中的建议是,使用序列文件比使用压缩文本文件更好。这是因为Gzip文件不可拆分,如果你有一个非常大的Gzip文件,所有文件必须只用一个Mapper处理,不允许在群集节点之间并行分配工作。

然后,Hive的建议是将压缩文本文件转换为序列文件以避免该限制。这只是关于表现。

如果您的文件很小,那么无关紧要(< 1 Hadoop块大小 - 默认为128MB)。