sql - HIVE查询如何有效地查找以avro格式存储的数据?

标签 sql hadoop hive avro

我们有大量相对较小的传入文件供分析,所有文件的可用列都略有变化。我们将它们转换为avro格式,并在所有数据文件中维护一个主联合架构文件。然后,我们将创建一个HIVE表并将其公开以进行查询。

我禁不住认为这张照片有些不对劲。查询如何确定要访问哪些单个文件或多个文件以获取任何小数据子集?是否不需要每个查询来读取每个文件并搜索所查询的数据?这似乎效率极低。
一种选择是开始组合这些文件,但是即使文件大小与Hadoop块大小完全相同,我们也会有大量文件。

现在,我对每个文件的内容都有完整的信息。它们用日期标记,因此,如果我要手动查找数据,我将确切知道要访问哪些文件。如何将这些知识构建到HIVE界面中?

最佳答案

我相信我的问题不是AVRO文件格式所独有的,而是在碎片化为多个文件的任何基础外部数据上创建HIVE表时遇到的一个普遍问题。如果您在Google搜索中问有关HIVE和多个文件的相同问题,则将发现解决此问题的最佳方法是在表中创建分区。每个分区将引导查询仅遍历相关文件。

诀窍是正确设计如何将文件存储到子文件夹并分配适当的分区。

关于sql - HIVE查询如何有效地查找以avro格式存储的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508198/

相关文章:

sql - 创建连接查找特定数据时遇到问题

sql - 零或一到零或一的关系

hadoop - 如何从Web应用程序将作业提交到hadoop集群?

hadoop - 如何在使用 Impala 从 Tableau 连接 Hive 表元数据时刷新它

hadoop - 将Hive转换为Spark

sql - oracle sql错误-缺少右括号

java - Derby 中的sql错误 - ERROR 42X01 : Syntax error: Encountered “WHERE”

hadoop - 运行 map 减少作业时使用-libjars时出错

date - 在Hive中执行数据功能,其中日期格式包含需要转义的字符

hadoop - Hive 使用收集聚合