TableUtil.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. package com.sagacloud.util.compute_engine.fjd;
  2. import cn.hutool.core.io.FileUtil;
  3. import cn.hutool.core.io.resource.ResourceUtil;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.alibaba.fastjson.JSONReader;
  7. import com.sagacloud.repository.HBaseSaveManagerRepository;
  8. import com.sagacloud.util.compute_engine.util.ConstantCE;
  9. import com.sagacloud.util.compute_engine.util.QueryUtil;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.zillion.util.json.FastJsonReaderUtil;
  12. import org.zillion.util.json.FastJsonUtil;
  13. import java.io.File;
  14. import java.io.InputStreamReader;
  15. import java.io.Reader;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. @Slf4j
  19. public class TableUtil {
  20. static String[] table_names_ci = {"ci_instance", "ci_instanceinput", "ci_instanceoutput", "ci_status"};
  21. static String[] table_names_ce = {"ce_preroundindex", "ce_curround", "ce_computelog", "ce_computeinputlog", "ce_computeinputdetail",
  22. "ce_computeoutputdetail"};
  23. static String[] table_names_fjd = {"fjd_0_computedetail", "fjd_0_computelog", "fjd_0_metercomputetime", "fjd_1_computedetail",
  24. "fjd_1_computelog", "fjd_2_computedetail", "fjd_2_computelog", "fjd_3_computedetail", "fjd_3_computelog"};
  25. static String[] table_names_data = {"data_servicedata", "data_servicedata_max", "data_objectdata", "data_objectdata_max", "data_energydata",
  26. "data_energydata_max", "fjd_0_near", "fjd_0_rate", "fjd_1_near", "fjd_2_near", "fjd_3_near", "fjd_statinst", "original_flag"};
  27. static String[] table_names_data_seperate = {"data_servicedata_1min", "data_servicedata_5min", "data_servicedata_15min", "data_servicedata_1h",
  28. "data_servicedata_1d", "data_servicedata_1m", "data_servicedata_1y", "data_servicedata_max_1h", "data_servicedata_max_1d",
  29. "data_servicedata_max_1m", "data_servicedata_max_1y", "data_objectdata_1min", "data_objectdata_5min", "data_objectdata_15min",
  30. "data_objectdata_1h", "data_objectdata_1d", "data_objectdata_1m", "data_objectdata_1y", "data_objectdata_max_1h",
  31. "data_objectdata_max_1d", "data_objectdata_max_1m", "data_objectdata_max_1y", "data_energydata_1min", "data_energydata_5min",
  32. "data_energydata_15min", "data_energydata_1h", "data_energydata_1d", "data_energydata_1m", "data_energydata_1y", "data_energydata_max_1h",
  33. "data_energydata_max_1d", "data_energydata_max_1m", "data_energydata_max_1y", "data_tenantdata_15min", "data_tenantdata_1h",
  34. "data_tenantdata_1d", "data_tenantdata_1m", "data_tenantdata_1y", "data_tenantdata_max_1h", "data_tenantdata_max_1d",
  35. "data_tenantdata_max_1m", "data_tenantdata_max_1y", "data_tenantfee_15min", "data_tenantfee_1h", "data_tenantfee_1d", "data_tenantfee_1m",
  36. "data_tenantfee_1y", "data_tenantbalance", "data_tenantbalance_present", "fjd_0_near_1min", "fjd_0_near_5min", "fjd_0_near_15min",
  37. "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",
  38. "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",
  39. "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",
  40. "fjd_3_near_1d", "fjd_statinst_5min", "fjd_statinst_15min", "fjd_statinst_1h", "fjd_statinst_1d", "fjd_statinst_1m", "fjd_statinst_1y",
  41. "original_flag"};
  42. static String[] table_names_loss_rate = {"fjd_0_loss_rate_1d", "fjd_0_loss_rate_1m"};
  43. public static void AddTables(String database_name) throws Exception {
  44. List<String[]> table_namesList = new ArrayList<String[]>();
  45. table_namesList.add(table_names_ci);
  46. table_namesList.add(table_names_ce);
  47. table_namesList.add(table_names_fjd);
  48. if (ConstantCE.time_period_seperate) {
  49. table_namesList.add(table_names_data_seperate);
  50. } else {
  51. table_namesList.add(table_names_data);
  52. }
  53. if (ConstantCE.fjd_0_loss_rate_enable) {
  54. table_namesList.add(table_names_loss_rate);
  55. }
  56. for (String[] table_names : table_namesList) {
  57. for (String table_name : table_names) {
  58. AddTable(database_name, table_name);
  59. }
  60. }
  61. }
  62. public static void ClearTables(String database_name, boolean ci_include, boolean is_clear, boolean only_log)
  63. throws Exception {
  64. List<String[]> table_namesList = new ArrayList<String[]>();
  65. if (ci_include) {
  66. table_namesList.add(table_names_ci);
  67. }
  68. table_namesList.add(table_names_ce);
  69. table_namesList.add(table_names_fjd);
  70. if (ConstantCE.time_period_seperate) {
  71. table_namesList.add(table_names_data_seperate);
  72. } else {
  73. table_namesList.add(table_names_data);
  74. }
  75. for (String[] table_names : table_namesList) {
  76. for (String table_name : table_names) {
  77. if (only_log && (!table_name.endsWith("log") && !table_name.endsWith("detail"))) {
  78. continue;
  79. }
  80. QueryUtil.ClearTable(database_name, table_name, is_clear);
  81. }
  82. }
  83. }
  84. public static void AlterTables(String database_name) throws Exception {
  85. {
  86. String[] logs = {"ce_computelog", "fjd_0_computelog", "fjd_1_computelog", "fjd_2_computelog"};
  87. JSONArray Columns_add = new JSONArray();
  88. {
  89. JSONObject Column = new JSONObject();
  90. Column.put("Name", "operate_time_from");
  91. Column.put("Type", "String(20)");
  92. Columns_add.add(Column);
  93. }
  94. {
  95. JSONObject Column = new JSONObject();
  96. Column.put("Name", "operate_time_to");
  97. Column.put("Type", "String(20)");
  98. Columns_add.add(Column);
  99. }
  100. JSONObject alter_content = new JSONObject();
  101. alter_content.put("Columns_add", Columns_add);
  102. for (String table_name : logs) {
  103. try {
  104. HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content);
  105. } catch (Exception e) {
  106. if (e.getMessage().contains("Columns exist:")) {
  107. } else {
  108. throw e;
  109. }
  110. }
  111. }
  112. }
  113. {
  114. String[] details = {"ce_computeoutputdetail", "fjd_0_computedetail", "fjd_1_computedetail", "fjd_2_computedetail"};
  115. JSONArray Columns_add = new JSONArray();
  116. {
  117. JSONObject Column = new JSONObject();
  118. Column.put("Name", "operate_time_to");
  119. Column.put("Type", "String(20)");
  120. Columns_add.add(Column);
  121. }
  122. JSONObject alter_content = new JSONObject();
  123. alter_content.put("Columns_add", Columns_add);
  124. for (String table_name : details) {
  125. try {
  126. HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content);
  127. } catch (Exception e) {
  128. if (e.getMessage().contains("Columns exist:")) {
  129. } else {
  130. throw e;
  131. }
  132. }
  133. }
  134. }
  135. {
  136. String[] details = {"fjd_0_computelog"};
  137. JSONArray Columns_add = new JSONArray();
  138. {
  139. JSONObject Column = new JSONObject();
  140. Column.put("Name", "is_recompute");
  141. Column.put("Type", "Long");
  142. Columns_add.add(Column);
  143. }
  144. JSONObject alter_content = new JSONObject();
  145. alter_content.put("Columns_add", Columns_add);
  146. for (String table_name : details) {
  147. try {
  148. HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content);
  149. } catch (Exception e) {
  150. if (e.getMessage().contains("Columns exist:")) {
  151. } else {
  152. throw e;
  153. }
  154. }
  155. }
  156. }
  157. {
  158. String[] details = {"fjd_0_computelog"};
  159. JSONArray Columns_add = new JSONArray();
  160. {
  161. JSONObject Column = new JSONObject();
  162. Column.put("Name", "detail_content");
  163. Column.put("Type", "String(16777215)");
  164. Columns_add.add(Column);
  165. }
  166. JSONObject alter_content = new JSONObject();
  167. alter_content.put("Columns_add", Columns_add);
  168. for (String table_name : details) {
  169. try {
  170. HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content);
  171. } catch (Exception e) {
  172. if (e.getMessage().contains("Columns exist:")) {
  173. } else {
  174. throw e;
  175. }
  176. }
  177. }
  178. }
  179. {
  180. String[] details = {"tenant_recharge"};
  181. JSONArray Columns_add = new JSONArray();
  182. {
  183. JSONObject Column = new JSONObject();
  184. Column.put("Name", "is_used");
  185. Column.put("Type", "Long");
  186. Columns_add.add(Column);
  187. }
  188. JSONObject alter_content = new JSONObject();
  189. alter_content.put("Columns_add", Columns_add);
  190. for (String table_name : details) {
  191. try {
  192. HBaseSaveManagerRepository.randomZillionAgent().DDL_AlterTable(database_name, table_name, "Columns_add", alter_content);
  193. } catch (Exception e) {
  194. if (e.getMessage().contains("Columns exist:")) {
  195. } else {
  196. throw e;
  197. }
  198. }
  199. }
  200. }
  201. }
  202. public static void AddTable(String database_name, String table_name) throws Exception {
  203. String file_name = table_name;
  204. if (table_name.startsWith("fjd_3")) {
  205. file_name = "fjd_2" + table_name.substring("fjd_2".length());
  206. }
  207. //JSONObject table_schema = FastJsonReaderUtil.Instance().ReadJSONObject(FileUtil.file("def_" + file_name + ".json"));
  208. JSONReader json_reader = new JSONReader(ResourceUtil.getUtf8Reader("def_" + file_name + ".json"));
  209. Object result = json_reader.readObject();
  210. FastJsonUtil.Normalize(result);
  211. JSONObject table_schema = (JSONObject)result;
  212. JSONArray Indexes = (JSONArray) table_schema.get("Indexes");
  213. table_schema.remove("Indexes");
  214. try {
  215. HBaseSaveManagerRepository.randomZillionAgent().DDL_AddTable(database_name, table_name, table_schema, Indexes);
  216. } catch (Exception e) {
  217. if(e.getMessage()!= null && e.getMessage().contains("schema exist")){
  218. }else {
  219. log.error(e.getMessage(), e);
  220. }
  221. }
  222. }
  223. }