因为在做hadoop计算的时候需要按照时间来分片,所以需要对long型的时间戳进行Partition,本来想了一下两个时间先归零到当天的0点,然后想减除以24小时就是中间的天数,这个算法没错,但是我没有考虑到时区的问题,归零的算法是(t1-t1%h24)t是时间戳,h表示一小时的毫秒数,这样归零其实是格林威治时间的归零,在我们这边正好的8点钟,这样就会把两天的数据并到一个分区里面,网上也有做法是
|
|
但是这种做法肯定很慢而却占用内存,对于每天原始数据有100多个G的文件进行分区这个肯定不行,于是继续改我的归零算法,最后就改成下面的鸟样
|
|
上面是我的测试代码,懒得解释,也很简单,但确效率至少在100倍以上,但肯定还有很大的优化的空间,有兴趣可以再优化优化