我们有大量相对较小的传入文件供分析,所有文件的可用列都略有变化。我们将它们转换为avro格式,并在所有数据文件中维护一个主联合架构文件。然后,我们将创建一个HIVE表并将其公开以进行查询。
我禁不住认为这张照片有些不对劲。查询如何确定要访问哪些单个文件或多个文件以获取任何小数据子集?是否不需要每个查询来读取每个文件并搜索所查询的数据?这似乎效率极低。
一种选择是开始组合这些文件,但是即使文件大小与Hadoop块大小完全相同,我们也会有大量文件。
现在,我对每个文件的内容都有完整的信息。它们用日期标记,因此,如果我要手动查找数据,我将确切知道要访问哪些文件。如何将这些知识构建到HIVE界面中?
最佳答案
我相信我的问题不是AVRO文件格式所独有的,而是在碎片化为多个文件的任何基础外部数据上创建HIVE表时遇到的一个普遍问题。如果您在Google搜索中问有关HIVE和多个文件的相同问题,则将发现解决此问题的最佳方法是在表中创建分区。每个分区将引导查询仅遍历相关文件。
诀窍是正确设计如何将文件存储到子文件夹并分配适当的分区。
关于sql - HIVE查询如何有效地查找以avro格式存储的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508198/