版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
背景
最近由于某些原因需要把一些原本location在oss(阿里云云对象存储)上的hive数据迁移到cosn(腾讯云对象存储)。目前一直在增量进行同步,在迁移之前需要进行数据的对比。至于对比的方法计划有两种,一种是对比oss和cosn对应文件下的文件所占磁盘空间大小,即使用hadoop fs -du -s -h 路径命令,然后对比相应表location的数据大小是否一直即可;另外一种是直接对相应的hive表进行count操作,表的location地址可以通过hive server2或者spark thrift server获取相应的元数据信息。
生成对比脚本
根据hive server2或者spark thrift server获取的分区、location、库名、表名等信息生成了数据量和所占磁盘空间的shell语句。这里的数据量语句最终生成到一个文件中:count.sh
count=`spark-sql --master yarn --executor-memory 8G --executor-cores 4 --num-executors 2 --driver-memory 4G -e"select count(1) from bi_ods.table1 "`echo bi_ods.table1:$count>>/Users/scx/work/git/company/utils/count.log count=`spark-sql --master yarn --executor-memory 8G --executor-cores 4 --num-executors 2 --driver-memory 4G -e"select count(1) from bi_ods.table2 "`echo bi_ods.table2:$count>>/Users/scx/work/git/company/utils/count.log count=`spark-sql --master yarn --executor-memory 8G --executor-cores 4 --num-executors 2 --driver-memor