SQL 在 Hadoop 中的应用
1. 列式数据
我们日常处理的数据大多以行式顺序存储在磁盘上,即一行的所有列在持久存储时是连续存放的。常见的 CSV、SequenceFiles 和 Avro 通常都是按行存储的。
使用列式存储格式保存数据,能在空间和执行时间方面带来显著的性能提升。列式数据连续存放,使得存储格式可以采用复杂的数据压缩方案,如游程编码,而行式数据则无法使用。此外,列式数据还允许 Hive、MapReduce 和 Tez 等执行引擎将谓词和投影推送到存储格式中,使这些存储格式能够跳过不符合下推条件的数据。
目前,Hive(和 Hadoop)上有两种热门的列式存储选项:优化行式列式(ORC)和 Parquet。它们分别来自 Hortonworks 和 Cloudera/Twitter,都提供了相似的节省空间和时间的优化。Parquet 的优势在于它致力于在 Hadoop 社区中实现最大兼容性,因此在撰写本文时,Parquet 对 Hadoop 生态系统的支持更广泛。
2. 调优 Hive 连接
在 Hive 中对大型数据集执行连接操作时,等待数小时才能完成是很常见的。下面将介绍如何优化 Hive 连接。
2.1 问题与解决方案
- 问题 :Hive 连接运行速度比预期慢,希望了解加速的方法。
- 解决方案 :通过重新分区连接、复制连接和半连接来优化 Hive 连接。
2.2 创建示例表
在开始之前,先创建两个表: </
超级会员免费看
订阅专栏 解锁全文
1517

被折叠的 条评论
为什么被折叠?



