在进行Hive参数调优和SQL调优之前，要进行相应的规划设计，包括：Hive表使用高效的文件格式，Hive表文件及中间文件使用合适的文件压缩格式，根据业务特征创建分区表以及创建分桶表。
ORC文件格式可以提供一种高效的方法来存储Hive数据，运用ORC可以提高Hive的读、写以及处理数据的性能。
（a）文本文件加载到ORC格式的Hive表的场景：由于文本格式到ORC，需要耗费较高的CPU计算资源，相比于直接落地成文本格式Hive表而言加载性能会低很多；
（b）Hive表作为计算结果数据，导出给Hadoop之外的外部系统读取使用的场景：ORC格式的结果数据，相比于文本格式的结果数据而言其易读性低很多。
除以上两种场景外，其他场景均建议使用ORC作为Hive表的存储格式。
Parquet的核心思想是使用“recordshreddingandassemblyalgorithm”来表示复杂的嵌套数据类型，同时辅以按列的高效压缩和编码技术，实现降低存储空间，提高IO效率，降低上层应用延迟。
Parquet是语言无关的，而且不与任何一种数据处理框架绑定在一起，适配多种语言和组件，能够与Parquet配合的组件有：
对于Impala和Hive共享数据和元数据的场景，建议Hive表存储格式为Parquet。
GZip和Snappy，这两种压缩算法在大数据应用中最常见，适用范围最广，压缩率和速度都较好，读取数据也不需要专门的解压操作，对编码来说透明。
压缩率跟数据有关，通常从2到5不等；两种算法中，GZip的压缩率更高，但是消耗CPU更高，Snappy的压缩率和CPU消耗更均衡。
对于存储资源受限或客户要求文件必须压缩的场景，可考虑使用以上两种压缩算法对表文件及中间文件进行压缩。
使用分区表能有效地分隔数据，分区条件作为查询条件时，减少扫描的数据量，加快查询的效率。
如果业务数据有明显的时间、区域等维度的区分，同时有较多的对应维度的查询条件时，建议按照相应维度进行一级或多级分区。
对于Hive表有按照某一列进行采样稽核的场景，建议以该列进行分桶。数据会以指定列的值为key哈希到指定数目的桶中，从而支持高效采样。
对于对两个或多个数据量较大的Hive表按照同一列进行Join的场景，建议以该列进行分桶。当Join时，仅加载部分桶的数据到内存，避免OOM。