这边在初始化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 = "********