国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

干货分享:利用Java多线程技术导入数据到Elasti

发布时间:2019/07/18标签:   线程    点击量:

原标题:干货分享:利用Java多线程技术导入数据到Elasti
媒介干货分享:利用java多线程技术导入数据到Elasticsearch近期接到一个义务,须要改革现有从mysql往Elasticsearch导入数据MTE(mysqlToEs)小东西,因为之前采纳复线程导入,千亿数据须要两周阁下的时光才干导入实现,导入效力十分低。以是楼主花了3天的时光,应用java线程池框架Executors中的FixedThreadPool线程池重写了MTE导入东西,单台效劳器导入效力进步十几倍(公道调剂线程数据,效力更高)。要害技巧栈 Elasticsearch jdbc ExecutorService\Thread sql东西阐明maven依靠mysqlmysql-connector-java${mysql.version}org.elasticsearchelasticsearch${elasticsearch.version}org.elasticsearch.clienttransport${elasticsearch.version}org.projectlomboklombok${lombok.version}com.alibabafastjson${fastjson.version}java线程池设置默许线程池巨细为21个,可调剂。此中POR为处置流程已办数据线程池,ROR为处置流程已阅数据线程池。privatestaticintTHREADS=21;publicstaticExecutorServicePOR=Executors.newFixedThreadPool(THREADS);publicstaticExecutorServiceROR=Executors.newFixedThreadPool(THREADS);界说已办出产者线程/已阅出产者线程:ZlPendProducer/ZlReadProducerpublicclassZlPendProducerimplementsRunnable{...@Overridepublicvoidrun(){System.out.println(threadName+"::启动...");for(intj=0;j<>count){//感化为size最初没有100条数据则残余几条newList中就装几条size=count-i;}Stringsql="select*from"+tableName+"limit"+i+","+size;System.out.println(tableName+"::sql::"+sql);rs=statement.executeQuery(sql);Listlst=newArrayList<>();while(rs.next()){HistPendingEntityp=PendUtils.getHistPendingEntity(rs);lst.add(p);}MteExecutor.POR.submit(newZlPendConsumer(lst));Thread.sleep(2000);}....}catch(Exceptione){e.printStackTrace();}}}publicclassZlReadProducerimplementsRunnable{...已阅出产者处置逻辑同已办出产者}界说已办花费者线程/已阅出产者线程:ZlPendConsumer/ZlReadConsumerpublicclassZlPendConsumerimplementsRunnable{privateStringthreadName;privateListlst;publicZlPendConsumer(Listlst){this.lst=lst;}@Overridepublicvoidrun(){...lst.forEach(v->{try{Stringjson=newGson().toJson(v);EsClient.addDataInJSON(json,Const.ES.HistPendDB_Index,Const.ES.HistPendDB_type,v.getPendingId(),null);Const.COUNTER.LD_P.incrementAndGet();}catch(Exceptione){e.printStackTrace();System.out.println("err::PendingId::"+v.getPendingId());}});...}}publicclassZlReadConsumerimplementsRunnable{//已阅花费者处置逻辑同已办花费者}

版权信息Copyright ? IT技术教程 版权所有??? ICP备案编号:鲁ICP备09013610号