这边在初始化Phoenix表数据的时候,遇到一个难题,就是需要往Phoenix里面初始化30亿的数据,而采用普通方式往phoenix插入数据,执行实在太慢,而且对现网phoenix会造成压力,导致现网phoenix的正常服务出现问题。
实际在处理过程中,发现了很多坑,和走了很多弯路。
下面详细讲一下解决方法和实现代码。
先说一下我的原始数据,原始数据是保持在MySQL里面的,采用分库分表的方式存储,HIVE也保存了一份离线数据。
刚开始想把HIVE数据导出成csv格式,然后再导入phoenix。
后来发现,导致成csv格式会有特殊字符问题,如果包含逗号等特殊字符,会导致整个异常。
最后决定导出成json格式。代码如下:
object AllCrmStatsToJson { def main(args: Array[String]): Unit = { val env = args(0) val idc = args(1) System.setProperty("env", env) System.setProperty("idc", idc) // 设置hive.metastore.uris val hivemetastoreUris = "*************************" // hive地址 // 获取参数 val hiveTable = args(2) // hive 表 val outpath = args(3) // 输出的hd
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)