This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
wanglihui-ip-learning-graph/ip-learning-java-test/src/main/java/cn/ac/iie/dao/BaseClickhouseData.java

186 lines
7.4 KiB
Java
Raw Normal View History

2020-06-28 18:29:39 +08:00
package cn.ac.iie.dao;
import cn.ac.iie.config.ApplicationConfig;
import cn.ac.iie.utils.ClickhouseConnect;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.arangodb.entity.BaseDocument;
import com.arangodb.entity.BaseEdgeDocument;
2020-07-15 19:33:59 +08:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2020-06-28 18:29:39 +08:00
import java.sql.ResultSet;
import java.sql.Statement;
2020-07-07 18:17:14 +08:00
import java.util.ArrayList;
2020-06-28 18:29:39 +08:00
import java.util.HashMap;
2020-07-15 19:33:59 +08:00
import static cn.ac.iie.service.read.ReadClickhouseData.*;
2020-06-28 18:29:39 +08:00
2020-07-15 19:33:59 +08:00
/**
* 读取clickhouse数据封装到map
* @author wlh
*/
public class BaseClickhouseData {
private static final Logger LOG = LoggerFactory.getLogger(BaseClickhouseData.class);
2020-06-28 18:29:39 +08:00
2020-07-15 19:33:59 +08:00
private static ClickhouseConnect manger = ClickhouseConnect.getInstance();
static HashMap<Integer, HashMap<String, ArrayList<BaseDocument>>> newVertexFqdnMap = new HashMap<>();
static HashMap<Integer, HashMap<String, ArrayList<BaseDocument>>> newVertexIpMap = new HashMap<>();
static HashMap<Integer, HashMap<String,ArrayList<BaseDocument>>> newVertexSubscriberMap = new HashMap<>();
static HashMap<Integer, HashMap<String, ArrayList<BaseEdgeDocument>>> newRelationFqdnAddressIpMap = new HashMap<>();
static HashMap<Integer, HashMap<String, ArrayList<BaseEdgeDocument>>> newRelationIpVisitFqdnMap = new HashMap<>();
static HashMap<Integer, HashMap<String, ArrayList<BaseEdgeDocument>>> newRelationSubsciberLocateIpMap = new HashMap<>();
2020-06-28 18:29:39 +08:00
2020-07-15 19:33:59 +08:00
private DruidPooledConnection connection;
private Statement statement;
2020-06-28 18:29:39 +08:00
2020-07-15 19:33:59 +08:00
void baseVertexFqdn() {
initializeMap(newVertexFqdnMap);
2020-07-15 19:33:59 +08:00
LOG.info("FQDN resultMap初始化完成");
String sql = getVertexFqdnSql();
2020-06-28 18:29:39 +08:00
long start = System.currentTimeMillis();
try {
2020-07-15 19:33:59 +08:00
connection = manger.getConnection();
statement = connection.createStatement();
2020-06-28 18:29:39 +08:00
ResultSet resultSet = statement.executeQuery(sql);
2020-07-15 19:33:59 +08:00
while (resultSet.next()) {
BaseDocument newDoc = getVertexFqdnDocument(resultSet);
if (newDoc != null) {
putMapByHashcode(newDoc, newVertexFqdnMap);
2020-07-15 19:33:59 +08:00
}
2020-06-28 18:29:39 +08:00
}
long last = System.currentTimeMillis();
2020-07-15 19:33:59 +08:00
LOG.info(sql + "\n读取clickhouse v_FQDN时间" + (last - start));
} catch (Exception e) {
LOG.error(e.toString());
}finally {
manger.clear(statement,connection);
2020-06-28 18:29:39 +08:00
}
}
2020-07-15 19:33:59 +08:00
void baseVertexIp() {
initializeMap(newVertexIpMap);
2020-07-15 19:33:59 +08:00
LOG.info("IP resultMap初始化完成");
String sql = getVertexIpSql();
2020-07-07 18:17:14 +08:00
long start = System.currentTimeMillis();
try {
2020-07-15 19:33:59 +08:00
connection = manger.getConnection();
statement = connection.createStatement();
2020-07-07 18:17:14 +08:00
ResultSet resultSet = statement.executeQuery(sql);
2020-07-15 19:33:59 +08:00
while (resultSet.next()) {
BaseDocument newDoc = getVertexIpDocument(resultSet);
putMapByHashcode(newDoc, newVertexIpMap);
2020-07-07 18:17:14 +08:00
}
long last = System.currentTimeMillis();
2020-07-15 19:33:59 +08:00
LOG.info(sql + "\n读取clickhouse v_IP时间" + (last - start));
} catch (Exception e) {
LOG.error(e.toString());
}finally {
manger.clear(statement,connection);
2020-07-07 18:17:14 +08:00
}
}
2020-07-15 19:33:59 +08:00
void baseVertexSubscriber(){
initializeMap(newVertexSubscriberMap);
2020-07-15 19:33:59 +08:00
LOG.info("SUBSCRIBER resultMap初始化完成");
String sql = getVertexSubscriberSql();
2020-06-28 18:29:39 +08:00
long start = System.currentTimeMillis();
try {
2020-07-15 19:33:59 +08:00
connection = manger.getConnection();
statement = connection.createStatement();
2020-06-28 18:29:39 +08:00
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
2020-07-15 19:33:59 +08:00
BaseDocument newDoc = getVertexSubscriberDocument(resultSet);
putMapByHashcode(newDoc, newVertexSubscriberMap);
2020-06-28 18:29:39 +08:00
}
long last = System.currentTimeMillis();
2020-07-15 19:33:59 +08:00
LOG.info(sql + "\n读取clickhouse v_SUBSCRIBER时间" + (last - start));
2020-06-28 18:29:39 +08:00
}catch (Exception e){
2020-07-15 19:33:59 +08:00
LOG.error(sql + "\n读取clickhouse v_SUBSCRIBER失败");
2020-06-28 18:29:39 +08:00
e.printStackTrace();
2020-07-15 19:33:59 +08:00
}finally {
manger.clear(statement,connection);
2020-06-28 18:29:39 +08:00
}
}
2020-07-15 19:33:59 +08:00
void baseRelationshipSubscriberLocateIp(){
initializeMap(newRelationSubsciberLocateIpMap);
2020-07-15 19:33:59 +08:00
LOG.info("R_LOCATE_SUBSCRIBER2IP");
String sql = getRelationshipSubsciberLocateIpSql();
2020-06-28 18:29:39 +08:00
long start = System.currentTimeMillis();
try {
2020-07-15 19:33:59 +08:00
connection = manger.getConnection();
statement = connection.createStatement();
2020-06-28 18:29:39 +08:00
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()){
2020-07-15 19:33:59 +08:00
BaseEdgeDocument newDoc = getRelationshipSubsciberLocateIpDocument(resultSet);
putMapByHashcode(newDoc, newRelationSubsciberLocateIpMap);
2020-06-28 18:29:39 +08:00
}
long last = System.currentTimeMillis();
2020-07-15 19:33:59 +08:00
LOG.info(sql + "\n读取clickhouse ESubsciberLocateIp时间" + (last - start));
2020-06-28 18:29:39 +08:00
}catch (Exception e){
2020-07-15 19:33:59 +08:00
LOG.error(sql + "\n读取clickhouse ESubsciberLocateIp失败");
2020-06-28 18:29:39 +08:00
e.printStackTrace();
2020-07-15 19:33:59 +08:00
}finally {
manger.clear(statement,connection);
2020-06-28 18:29:39 +08:00
}
}
2020-07-15 19:33:59 +08:00
void baseRelationshipFqdnAddressIp() {
initializeMap(newRelationFqdnAddressIpMap);
2020-07-15 19:33:59 +08:00
LOG.info("R_LOCATE_FQDN2IP resultMap初始化完成");
String sql = getRelationshipFqdnAddressIpSql();
long start = System.currentTimeMillis();
2020-07-07 18:17:14 +08:00
try {
2020-07-15 19:33:59 +08:00
connection = manger.getConnection();
statement = connection.createStatement();
2020-07-07 18:17:14 +08:00
ResultSet resultSet = statement.executeQuery(sql);
2020-07-15 19:33:59 +08:00
while (resultSet.next()) {
BaseEdgeDocument newDoc = getRelationFqdnAddressIpDocument(resultSet);
putMapByHashcode(newDoc, newRelationFqdnAddressIpMap);
2020-07-07 18:17:14 +08:00
}
2020-07-15 19:33:59 +08:00
long last = System.currentTimeMillis();
LOG.info(sql + "\n读取clickhouse EFqdnAddressIp时间" + (last - start));
} catch (Exception e) {
LOG.error(e.toString());
}finally {
manger.clear(statement,connection);
2020-07-07 18:17:14 +08:00
}
}
2020-07-15 19:33:59 +08:00
void baseRelationshipIpVisitFqdn() {
initializeMap(newRelationIpVisitFqdnMap);
2020-07-15 19:33:59 +08:00
LOG.info("R_VISIT_IP2FQDN resultMap初始化完成");
String sql = getRelationshipIpVisitFqdnSql();
2020-06-28 18:29:39 +08:00
long start = System.currentTimeMillis();
try {
2020-07-15 19:33:59 +08:00
connection = manger.getConnection();
statement = connection.createStatement();
2020-06-28 18:29:39 +08:00
ResultSet resultSet = statement.executeQuery(sql);
2020-07-15 19:33:59 +08:00
while (resultSet.next()) {
BaseEdgeDocument newDoc = getRelationIpVisitFqdnDocument(resultSet);
putMapByHashcode(newDoc, newRelationIpVisitFqdnMap);
2020-06-28 18:29:39 +08:00
}
long last = System.currentTimeMillis();
2020-07-15 19:33:59 +08:00
LOG.info(sql + "\n读取clickhouse EIpVisitFqdn时间" + (last - start));
} catch (Exception e) {
LOG.error(e.toString());
}finally {
manger.clear(statement,connection);
}
}
private <T extends BaseDocument> void initializeMap(HashMap<Integer, HashMap<String,ArrayList<T>>> map){
try {
for (int i = 0; i < ApplicationConfig.THREAD_POOL_NUMBER; i++) {
map.put(i, new HashMap<>());
2020-06-28 18:29:39 +08:00
}
}catch (Exception e){
e.printStackTrace();
2020-07-15 19:33:59 +08:00
LOG.error("初始化数据失败");
2020-06-28 18:29:39 +08:00
}
}
2020-07-15 19:33:59 +08:00
2020-06-28 18:29:39 +08:00
}