los datos de configuración de MySQL en la tabla, buscar datos en otras bases de datos y datos en formato JSON y subido a la hbase

1. Lea la información de configuración en una tabla de base de datos en dos filas

2. Consulta de configuración del campo de información de la enfermedad de acuerdo con la información de configuración

3. Los datos de la consulta a la base de corte y empalme en formato JSON

4. Los datos resultantes se inserta hbase, se inserta una sola tira, y la inserción mayor inserción incremental de método Zeng

El primer paso en el método de preparación de conectar mysql mysql encendido y apagado, y cuando la consulta de información de MySQL, el primero en utilizar el método para conectarse a la mysql.

La información de configuración en la base de datos, definir List <String> de formato variable, la información de configuración se almacena en la base de datos, utilizando información PrepareStament consulta la base de datos y, a continuación se añaden los resultados de la consulta a la lista en la segunda etapa puede ser obtenida. 

public List<String> getMysqlInfo(String id){
     ResultSet rs=null;
     List<String> list1=new ArrayList<String>();
     try {
         String sql="select * from MYSQL_TO_HBASE where id= ? ";
         ps=connection.prepareStatement(sql);
         ps.setString(1,id);
         rs =ps.executeQuery();  

El tercer paso de la consulta la información de configuración para encontrar información sobre la historia de la enfermedad, y en datos de formato JSON, añadir datos a la lista <Lista <String >> tipos de variables Leix, dos de lista, la lista de la primera información de identificación personal almacenada número de identificación, la segunda lista almacenada en la historia del formato JSON información de la enfermedad, cuando tiene que ser eliminado en el personal JSON número de tarjeta de identidad, sin antecedentes de la enfermedad durante el uso de la información de datos de objetos de clase de entidad en fastjson datos JSON datos.

public List<List<String>> getDisease(String id){
     ResultSet rse=null;
     List<String> list= new ArrayList<String>();  //存放转为json格式的疾病史信息
     List<String> list1= new ArrayList<String>();   //存放有疾病史信息的身份证号码
     List<List<String>> list3= new ArrayList<List<String>>(); //存放最终得到的 <身份证号, 疾病史信息>
     try {
         statement=connection.createStatement();   //根据配置表信息的值查询 疾病史信息
         String sql1="select "+getMysqlInfo(id).get(8)+" from 数据库名称."+getMysqlInfo(id).get(6)+"";
         rse =statement.executeQuery(sql1);

La parte anterior de la información del código para obtener una enfermedad humana, sin embargo, una persona puede tener información de múltiples enfermedades, información de la enfermedad a una entidad encapsulada en una clase, y añade el número de identificación, como las clases de entidad.

List<DisNT_Entity> list2= new ArrayList<DisNT_Entity>();//存放一条疾病史信息
String sfzhm=rse.getString(1);
String jbmc1=rse.getString(3);
String jbqznl1=rse.getString(4);

El nombre de la enfermedad y la edad de aparición de la enfermedad que se aplica a un objeto sólido, fecha de inicio del proceso de la enfermedad, utilizando el número de identificación en la fecha de inicio de nacimiento Edad además de manera de dar la hora de inicio.

Integer.valueOf(sfzhm.substring(6, 10)) + Integer.valueOf(jbqznl1) + "-" + sfzhm.substring(10, 12)+ "-" +sfzhm.substring(12,14)

Determinar si una persona tiene la enfermedad para añadir el número de identificación mediante el indicador, cada vez que se crea una entidad objeto de clase de la bandera de temporada = true. Cuando está presente flag = true, la información se obtiene de la json mysql enfermedad en el formato de datos.

if(flag){
    String listJson=JSON.toJSON(list2).toString();
    list.add(listJson);
    list1.add(sfzhm);
}

Por último, se suman los dos datos de la lista junto list3 pueden ser.

El cuarto paso del método de conexión hbase preparación, cerrado, solo inserto, el método de insertar a granel, la consulta de datos hbase

//单条插入
public void insterRow(String tableName, String rowkey, String colFamily, String col, String val)
        throws IOException {
    Table table = connection.getTable(TableName.valueOf(tableName));
    Put put = new Put(Bytes.toBytes(rowkey));
    put.addColumn(Bytes.toBytes(colFamily), Bytes.toBytes(col), Bytes.toBytes(val));
    table.put(put);
    table.close();
}
//批量插入
public void insterRows(List<Put> putList,String tableName) {
    Table table;
    try {
        table = connection.getTable(TableName.valueOf(tableName));
        table.put(putList);
        table.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

El quinto paso con métodos escritos y Mysql hbase el método de consulta por lotes, si hay hbase en el número de tarjeta de identidad de la información del usuario, y luego coser la información antigua y la información con una cadena, llame a la mayor inserción método para insertar información en el hbase.

List<List<String>> list=mu.getDisease(id);
//查询已有标签
List<String> reList = hu.getDatas(list.get(0), "tags");
//批量插入
for(int k=0;k<list.get(0).size();k++){
    String jsonTmp1 = "";
    String jsonTmp2 = "";
    String jsonTmp3 = "";
    /*拼接Hbase中已有的字段内容和list中的数据
    Hbase中已有相同rowkey,则将字段赋值给jsonTemp1到倒数第二个字符,并添加逗号,将最后一个字符的]转为,以符合json格 * */
    if (null != reList.get(k) && !"".equals(reList.get(k))) {
        jsonTmp1 = reList.get(k).substring(0,reList.get(k).length()-1)+",";
        jsonTmp2 =  list.get(1).get(k).substring(1);
        jsonTmp3 = jsonTmp1 + jsonTmp2;
    }else {
        jsonTmp3 = list.get(1).get(k);
    }
    /*
    将list中第一个list的内容添加到put,即身份证号码
    将所有的疾病信息即jsonTmp3添加到put
    * */
    Put put = new Put(Bytes.toBytes(list.get(0).get(k)));
    put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("tags"), Bytes.toBytes(jsonTmp3));
    putlist.add(put);
}
//调用HbaseUtils中的批量插入方法,将数据插入到Hbase中
hu.insterRows(putlist,tablename);
Publicado 36 artículos originales · ganado elogios 19 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_27182767/article/details/84504028
Recomendado
Clasificación