SQL on Hadoop:优化与实践
1. 列式数据存储
在处理数据时,常见的数据存储方式是行式存储,像 CSV、SequenceFiles 和 Avro 通常都是按行存储,即一行的所有列在持久存储时是连续存放的。然而,使用列式存储格式保存数据能带来显著的性能提升,无论是在空间利用还是执行时间方面。
列式数据连续存放使得存储格式可以采用复杂的数据压缩方案,例如游程编码,而行式数据则无法应用这种编码。此外,列式数据允许 Hive、MapReduce 和 Tez 等执行引擎将谓词和投影下推到存储格式,让存储格式跳过不符合下推条件的数据。
目前,Hive(和 Hadoop)上有两种热门的列式存储选项:优化行式列存储(ORC)和 Parquet。它们分别来自 Hortonworks 和 Cloudera/Twitter,都提供了相似的节省空间和时间的优化。Parquet 的优势在于它旨在最大化在 Hadoop 社区的兼容性,因此在当前,Parquet 对 Hadoop 生态系统有更好的支持。
2. 优化 Hive 连接
在 Hive 中对大型数据集执行连接操作时,等待数小时才能完成是很常见的情况。以下是优化 Hive 连接的一些方法:
- 创建示例表 :
$ hadoop fs -mkdir stocks-mini
$ hadoop fs -put test-data/ch9/stocks-mini.txt stocks-mini
$ hadoop fs -mkdir symbol-names
$ hadoop fs
超级会员免费看
订阅专栏 解锁全文
1340

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



