Hive加载数据与数据null值处理
背景:load数据文件的数据流转的雏形通常是:
业务库 -> 数据文件 -> load进hive -> ods层
这里会面临最基础的两个问题:
- 通常我们需要一个跳板层,即将数据文件Load进stage层(text),然后通过查询加载进ODS层(ORC);
- 数据文件生成时,如果直接使用命令行的形式,字段null值将被直接赋值为’NULL’字符串;
RC File 和 ORC File 的区别
RC File(Record Columnar File)和ORC File(Optimized Row Columnar File)都是Hive中的列式存储格式,它们都旨在提高查询性能和降低存储成本,但有一些区别:
1. 存储方式不同:
- RC File是将每个记录作为一个行存储,但每列都单独存储,因此数据被列分隔。列的数据被压缩在每个数据块内,可以根据需要使用Zlib、Snappy或LZO等算法进行压缩。
- ORC File是将数据按行组织并存储在行组中,每个行组可以包含数千行记录,而每列单独存储,列的数据按列分隔存储。列数据被压缩在行组内,可以使用Snappy、Zlib、LZO、LZ4等算法进行压缩。
2. 压缩率和压缩效率不同:
- ORC比RC更优秀的原因之一是,它可以基于数据类型和压缩算法选择更适合的压缩算法,以实现更好的压缩率和压缩效率。ORC压缩方式可以在每列和每行组上分别选择,根据实际数据的分布情况来选择更好的压缩算法。