Hive分区

  hive分区是对hive表的一种组织形式,可以加快查询,是一种对表进行粗略划分的机制,使用分区时,在表目录下会有相应的子目录,当查询时若添加了分区谓词,该查询会定位到相应的字目录下进行查询,避免了全表扫描,比如日志文件分析,将日志按天存储。分区并不会影响大范围的查询。

  外部表也可以分区,具有良好的灵活性,例如:
  这种灵活性的一个有趣的优点是我们可以使用像Amazon S3这样的廉价的存储设备存储旧的数据,同时保存较新的更加“有趣的”数据到HDFS中。例如,每天我们可以使用如下的处理过程将一个月前的旧数据转移到S3中。

1.将分区下的数据拷贝到S3中。例如,用户可以使用hadoop distcp命令:

  hadoop distcp /data/log_messages/2011/12/02 s3n: //ourbucket//logs/2011/12/02

2.修改表,将分区路径指向到S3路径:

  ALTER TABLE log_messages PARTITION(year = 2011, month = 12, day = 2)
  SET LOCATION 's3n://ourbucket/logs/2011/01/02';

3.使用 hadoop fs -rmr 命令删除HDFS中的这个分区数据:

  hadoop fs -rmr /data/log_messages/2011/01/02

猜你喜欢

转载自my.oschina.net/134596/blog/1798986