package com.sagacloud.util.compute_engine.fjd; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.resource.ResourceUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONReader; import com.sagacloud.repository.HBaseSaveManagerRepository; import com.sagacloud.util.compute_engine.util.ConstantCE; import com.sagacloud.util.compute_engine.util.QueryUtil; import lombok.extern.slf4j.Slf4j; import org.zillion.util.json.FastJsonReaderUtil; import org.zillion.util.json.FastJsonUtil; import java.io.File; import java.io.InputStreamReader; import java.io.Reader; import java.util.ArrayList; import java.util.List; @Slf4j public class TableUtil { static String[] table_names_ci = {"ci_instance", "ci_instanceinput", "ci_instanceoutput", "ci_status"}; static String[] table_names_ce = {"ce_preroundindex", "ce_curround", "ce_computelog", "ce_computeinputlog", "ce_computeinputdetail", "ce_computeoutputdetail"}; static String[] table_names_fjd = {"fjd_0_computedetail", "fjd_0_computelog", "fjd_0_metercomputetime", "fjd_1_computedetail", "fjd_1_computelog", "fjd_2_computedetail", "fjd_2_computelog", "fjd_3_computedetail", "fjd_3_computelog"}; static String[] table_names_data = {"data_servicedata", "data_servicedata_max", "data_objectdata", "data_objectdata_max", "data_energydata", "data_energydata_max", "fjd_0_near", "fjd_0_rate", "fjd_1_near", "fjd_2_near", "fjd_3_near", "fjd_statinst", "original_flag"}; static String[] table_names_data_seperate = {"data_servicedata_1min", "data_servicedata_5min", "data_servicedata_15min", "data_servicedata_1h", "data_servicedata_1d", "data_servicedata_1m", "data_servicedata_1y", "data_servicedata_max_1h", "data_servicedata_max_1d", "data_servicedata_max_1m", "data_servicedata_max_1y", "data_objectdata_1min", "data_objectdata_5min", "data_objectdata_15min", "data_objectdata_1h", "data_objectdata_1d", "data_objectdata_1m", "data_objectdata_1y", "data_objectdata_max_1h", "data_objectdata_max_1d", "data_objectdata_max_1m", "data_objectdata_max_1y", "data_energydata_1min", "data_energydata_5min", "data_energydata_15min", "data_energydata_1h", "data_energydata_1d", "data_energydata_1m", "data_energydata_1y", "data_energydata_max_1h", "data_energydata_max_1d", "data_energydata_max_1m", "data_energydata_max_1y", "data_tenantdata_15min", "data_tenantdata_1h", "data_tenantdata_1d", "data_tenantdata_1m", "data_tenantdata_1y", "data_tenantdata_max_1h", "data_tenantdata_max_1d", "data_tenantdata_max_1m", "data_tenantdata_max_1y", "data_tenantfee_15min", "data_tenantfee_1h", "data_tenantfee_1d", "data_tenantfee_1m", "data_tenantfee_1y", "data_tenantbalance", "data_tenantbalance_present", "fjd_0_near_1min", "fjd_0_near_5min", "fjd_0_near_15min", "fjd_0_near_1h", "fjd_0_near_1d", "fjd_0_rate_1min", "fjd_0_rate_5min", "fjd_0_rate_15min", "fjd_0_rate_1h", "fjd_0_rate_1d", "fjd_1_near_1min", "fjd_1_near_5min", "fjd_1_near_15min", "fjd_1_near_1h", "fjd_1_near_1d", "fjd_2_near_1min", "fjd_2_near_5min", "fjd_2_near_15min", "fjd_2_near_1h", "fjd_2_near_1d", "fjd_3_near_1min", "fjd_3_near_5min", "fjd_3_near_15min", "fjd_3_near_1h", "fjd_3_near_1d", "fjd_statinst_5min", "fjd_statinst_15min", "fjd_statinst_1h", "fjd_statinst_1d", "fjd_statinst_1m", "fjd_statinst_1y", "original_flag"}; static String[] table_names_loss_rate = {"fjd_0_loss_rate_1d", "fjd_0_loss_rate_1m"}; public static void AddTables(String database_name) throws Exception { List table_namesList = new ArrayList(); table_namesList.add(table_names_ci); table_namesList.add(table_names_ce); table_namesList.add(table_names_fjd); if (ConstantCE.time_period_seperate) { table_namesList.add(table_names_data_seperate); } else { table_namesList.add(table_names_data); } if (ConstantCE.fjd_0_loss_rate_enable) { table_namesList.add(table_names_loss_rate); } for (String[] table_names : table_namesList) { for (String table_name : table_names) { AddTable(database_name, table_name); } } } public static void ClearTables(String database_name, boolean ci_include, boolean is_clear, boolean only_log) throws Exception { List table_namesList = new ArrayList(); if (ci_include) { table_namesList.add(table_names_ci); } table_namesList.add(table_names_ce); table_namesList.add(table_names_fjd); if (ConstantCE.time_period_seperate) { table_namesList.add(table_names_data_seperate); } else { table_namesList.add(table_names_data); } for (String[] table_names : table_namesList) { for (String table_name : table_names) { if (only_log && (!table_name.endsWith("log") && !table_name.endsWith("detail"))) { continue; } QueryUtil.ClearTable(database_name, table_name, is_clear); } } } public static void AlterTables(String database_name) throws Exception { { String[] logs = {"ce_computelog", "fjd_0_computelog", "fjd_1_computelog", "fjd_2_computelog"}; JSONArray Columns_add = new JSONArray(); { JSONObject Column = new JSONObject(); Column.put("Name", "operate_time_from"); Column.put("Type", "String(20)"); Columns_add.add(Column); } { JSONObject Column = new JSONObject(); Column.put("Name", "operate_time_to"); Column.put("Type", "String(20)"); Columns_add.add(Column); } JSONObject alter_content = new JSONObject(); alter_content.put("Columns_add", Columns_add); for (String table_name : logs) { try { HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content); } catch (Exception e) { if (e.getMessage().contains("Columns exist:")) { } else { throw e; } } } } { String[] details = {"ce_computeoutputdetail", "fjd_0_computedetail", "fjd_1_computedetail", "fjd_2_computedetail"}; JSONArray Columns_add = new JSONArray(); { JSONObject Column = new JSONObject(); Column.put("Name", "operate_time_to"); Column.put("Type", "String(20)"); Columns_add.add(Column); } JSONObject alter_content = new JSONObject(); alter_content.put("Columns_add", Columns_add); for (String table_name : details) { try { HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content); } catch (Exception e) { if (e.getMessage().contains("Columns exist:")) { } else { throw e; } } } } { String[] details = {"fjd_0_computelog"}; JSONArray Columns_add = new JSONArray(); { JSONObject Column = new JSONObject(); Column.put("Name", "is_recompute"); Column.put("Type", "Long"); Columns_add.add(Column); } JSONObject alter_content = new JSONObject(); alter_content.put("Columns_add", Columns_add); for (String table_name : details) { try { HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content); } catch (Exception e) { if (e.getMessage().contains("Columns exist:")) { } else { throw e; } } } } { String[] details = {"fjd_0_computelog"}; JSONArray Columns_add = new JSONArray(); { JSONObject Column = new JSONObject(); Column.put("Name", "detail_content"); Column.put("Type", "String(16777215)"); Columns_add.add(Column); } JSONObject alter_content = new JSONObject(); alter_content.put("Columns_add", Columns_add); for (String table_name : details) { try { HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content); } catch (Exception e) { if (e.getMessage().contains("Columns exist:")) { } else { throw e; } } } } { String[] details = {"tenant_recharge"}; JSONArray Columns_add = new JSONArray(); { JSONObject Column = new JSONObject(); Column.put("Name", "is_used"); Column.put("Type", "Long"); Columns_add.add(Column); } JSONObject alter_content = new JSONObject(); alter_content.put("Columns_add", Columns_add); for (String table_name : details) { try { HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content); } catch (Exception e) { if (e.getMessage().contains("Columns exist:")) { } else { throw e; } } } } } public static void AddTable(String database_name, String table_name) throws Exception { String file_name = table_name; if (table_name.startsWith("fjd_3")) { file_name = "fjd_2" + table_name.substring("fjd_2".length()); } //JSONObject table_schema = FastJsonReaderUtil.Instance().ReadJSONObject(FileUtil.file("def_" + file_name + ".json")); JSONReader json_reader = new JSONReader(ResourceUtil.getUtf8Reader("def_" + file_name + ".json")); Object result = json_reader.readObject(); FastJsonUtil.Normalize(result); JSONObject table_schema = (JSONObject)result; JSONArray Indexes = (JSONArray) table_schema.get("Indexes"); table_schema.remove("Indexes"); try { HBaseSaveManagerRepository.randomZillionAgent().DDL_AddTable(database_name, table_name, table_schema, Indexes); } catch (Exception e) { if(e.getMessage()!= null && e.getMessage().contains("schema exist")){ }else { log.error(e.getMessage(), e); } } } }