|
@@ -59,11 +59,11 @@ public class HbaseSyncService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- MappingConfig.HbaseOrm hbaseOrm = config.getHbaseOrm();
|
|
|
+ MappingConfig.HbaseMapping hbaseMapping = config.getHbaseMapping();
|
|
|
|
|
|
// if (!validHTable(config)) {
|
|
|
// logger.error("HBase table '{}' not exists",
|
|
|
- // hbaseOrm.getHbaseTable());
|
|
|
+ // hbaseMapping.getHbaseTable());
|
|
|
// return;
|
|
|
// }
|
|
|
int i = 1;
|
|
@@ -73,28 +73,28 @@ public class HbaseSyncService {
|
|
|
HRow hRow = new HRow();
|
|
|
|
|
|
// 拼接复合rowKey
|
|
|
- if (hbaseOrm.getRowKey() != null) {
|
|
|
- String[] rowKeyColumns = hbaseOrm.getRowKey().trim().split(",");
|
|
|
+ if (hbaseMapping.getRowKey() != null) {
|
|
|
+ String[] rowKeyColumns = hbaseMapping.getRowKey().trim().split(",");
|
|
|
String rowKeyVale = getRowKeys(rowKeyColumns, r);
|
|
|
// params.put("rowKey", Bytes.toBytes(rowKeyVale));
|
|
|
hRow.setRowKey(Bytes.toBytes(rowKeyVale));
|
|
|
}
|
|
|
|
|
|
- convertData2Row(hbaseOrm, hRow, r);
|
|
|
+ convertData2Row(hbaseMapping, hRow, r);
|
|
|
if (hRow.getRowKey() == null) {
|
|
|
throw new RuntimeException("empty rowKey");
|
|
|
}
|
|
|
rows.add(hRow);
|
|
|
complete = false;
|
|
|
- if (i % config.getHbaseOrm().getCommitBatch() == 0 && !rows.isEmpty()) {
|
|
|
- hbaseTemplate.puts(hbaseOrm.getHbaseTable(), rows);
|
|
|
+ if (i % config.getHbaseMapping().getCommitBatch() == 0 && !rows.isEmpty()) {
|
|
|
+ hbaseTemplate.puts(hbaseMapping.getHbaseTable(), rows);
|
|
|
rows.clear();
|
|
|
complete = true;
|
|
|
}
|
|
|
i++;
|
|
|
}
|
|
|
if (!complete && !rows.isEmpty()) {
|
|
|
- hbaseTemplate.puts(hbaseOrm.getHbaseTable(), rows);
|
|
|
+ hbaseTemplate.puts(hbaseMapping.getHbaseTable(), rows);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -102,30 +102,30 @@ public class HbaseSyncService {
|
|
|
/**
|
|
|
* 将Map数据转换为HRow行数据
|
|
|
*
|
|
|
- * @param hbaseOrm hbase映射配置
|
|
|
+ * @param hbaseMapping hbase映射配置
|
|
|
* @param hRow 行对象
|
|
|
* @param data Map数据
|
|
|
*/
|
|
|
- private static void convertData2Row(MappingConfig.HbaseOrm hbaseOrm, HRow hRow, Map<String, Object> data) {
|
|
|
- Map<String, MappingConfig.ColumnItem> columnItems = hbaseOrm.getColumnItems();
|
|
|
+ private static void convertData2Row(MappingConfig.HbaseMapping hbaseMapping, HRow hRow, Map<String, Object> data) {
|
|
|
+ Map<String, MappingConfig.ColumnItem> columnItems = hbaseMapping.getColumnItems();
|
|
|
int i = 0;
|
|
|
for (Map.Entry<String, Object> entry : data.entrySet()) {
|
|
|
- if (hbaseOrm.getExcludeColumns() != null && hbaseOrm.getExcludeColumns().contains(entry.getKey())) {
|
|
|
+ if (hbaseMapping.getExcludeColumns() != null && hbaseMapping.getExcludeColumns().contains(entry.getKey())) {
|
|
|
continue;
|
|
|
}
|
|
|
if (entry.getValue() != null) {
|
|
|
MappingConfig.ColumnItem columnItem = columnItems.get(entry.getKey());
|
|
|
|
|
|
- byte[] bytes = typeConvert(columnItem, hbaseOrm, entry.getValue());
|
|
|
+ byte[] bytes = typeConvert(columnItem, hbaseMapping, entry.getValue());
|
|
|
|
|
|
if (columnItem == null) {
|
|
|
- String familyName = hbaseOrm.getFamily();
|
|
|
+ String familyName = hbaseMapping.getFamily();
|
|
|
String qualifier = entry.getKey();
|
|
|
- if (hbaseOrm.isUppercaseQualifier()) {
|
|
|
+ if (hbaseMapping.isUppercaseQualifier()) {
|
|
|
qualifier = qualifier.toUpperCase();
|
|
|
}
|
|
|
|
|
|
- if (hbaseOrm.getRowKey() == null && i == 0) {
|
|
|
+ if (hbaseMapping.getRowKey() == null && i == 0) {
|
|
|
hRow.setRowKey(bytes);
|
|
|
} else {
|
|
|
hRow.addCell(familyName, qualifier, bytes);
|
|
@@ -156,15 +156,15 @@ public class HbaseSyncService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- MappingConfig.HbaseOrm hbaseOrm = config.getHbaseOrm();
|
|
|
+ MappingConfig.HbaseMapping hbaseMapping = config.getHbaseMapping();
|
|
|
|
|
|
// if (!validHTable(config)) {
|
|
|
// logger.error("HBase table '{}' not exists",
|
|
|
- // hbaseOrm.getHbaseTable());
|
|
|
+ // hbaseMapping.getHbaseTable());
|
|
|
// return;
|
|
|
// }
|
|
|
|
|
|
- MappingConfig.ColumnItem rowKeyColumn = hbaseOrm.getRowKeyColumn();
|
|
|
+ MappingConfig.ColumnItem rowKeyColumn = hbaseMapping.getRowKeyColumn();
|
|
|
int index = 0;
|
|
|
int i = 1;
|
|
|
boolean complete = false;
|
|
@@ -172,8 +172,8 @@ public class HbaseSyncService {
|
|
|
out: for (Map<String, Object> r : data) {
|
|
|
byte[] rowKeyBytes;
|
|
|
|
|
|
- if (hbaseOrm.getRowKey() != null) {
|
|
|
- String[] rowKeyColumns = hbaseOrm.getRowKey().trim().split(",");
|
|
|
+ if (hbaseMapping.getRowKey() != null) {
|
|
|
+ String[] rowKeyColumns = hbaseMapping.getRowKey().trim().split(",");
|
|
|
|
|
|
// 判断是否有复合主键修改
|
|
|
for (String updateColumn : old.get(index).keySet()) {
|
|
@@ -190,23 +190,23 @@ public class HbaseSyncService {
|
|
|
rowKeyBytes = Bytes.toBytes(rowKeyVale);
|
|
|
} else if (rowKeyColumn == null) {
|
|
|
Map<String, Object> rowKey = data.get(0);
|
|
|
- rowKeyBytes = typeConvert(null, hbaseOrm, rowKey.values().iterator().next());
|
|
|
+ rowKeyBytes = typeConvert(null, hbaseMapping, rowKey.values().iterator().next());
|
|
|
} else {
|
|
|
- rowKeyBytes = typeConvert(rowKeyColumn, hbaseOrm, r.get(rowKeyColumn.getColumn()));
|
|
|
+ rowKeyBytes = typeConvert(rowKeyColumn, hbaseMapping, r.get(rowKeyColumn.getColumn()));
|
|
|
}
|
|
|
if (rowKeyBytes == null) throw new RuntimeException("rowKey值为空");
|
|
|
|
|
|
- Map<String, MappingConfig.ColumnItem> columnItems = hbaseOrm.getColumnItems();
|
|
|
+ Map<String, MappingConfig.ColumnItem> columnItems = hbaseMapping.getColumnItems();
|
|
|
HRow hRow = new HRow(rowKeyBytes);
|
|
|
for (String updateColumn : old.get(index).keySet()) {
|
|
|
- if (hbaseOrm.getExcludeColumns() != null && hbaseOrm.getExcludeColumns().contains(updateColumn)) {
|
|
|
+ if (hbaseMapping.getExcludeColumns() != null && hbaseMapping.getExcludeColumns().contains(updateColumn)) {
|
|
|
continue;
|
|
|
}
|
|
|
MappingConfig.ColumnItem columnItem = columnItems.get(updateColumn);
|
|
|
if (columnItem == null) {
|
|
|
- String family = hbaseOrm.getFamily();
|
|
|
+ String family = hbaseMapping.getFamily();
|
|
|
String qualifier = updateColumn;
|
|
|
- if (hbaseOrm.isUppercaseQualifier()) {
|
|
|
+ if (hbaseMapping.isUppercaseQualifier()) {
|
|
|
qualifier = qualifier.toUpperCase();
|
|
|
}
|
|
|
|
|
@@ -215,7 +215,7 @@ public class HbaseSyncService {
|
|
|
if (newVal == null) {
|
|
|
hRow.addCell(family, qualifier, null);
|
|
|
} else {
|
|
|
- hRow.addCell(family, qualifier, typeConvert(null, hbaseOrm, newVal));
|
|
|
+ hRow.addCell(family, qualifier, typeConvert(null, hbaseMapping, newVal));
|
|
|
}
|
|
|
} else {
|
|
|
// 排除修改id的情况
|
|
@@ -227,14 +227,14 @@ public class HbaseSyncService {
|
|
|
} else {
|
|
|
hRow.addCell(columnItem.getFamily(),
|
|
|
columnItem.getQualifier(),
|
|
|
- typeConvert(columnItem, hbaseOrm, newVal));
|
|
|
+ typeConvert(columnItem, hbaseMapping, newVal));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
rows.add(hRow);
|
|
|
complete = false;
|
|
|
- if (i % config.getHbaseOrm().getCommitBatch() == 0 && !rows.isEmpty()) {
|
|
|
- hbaseTemplate.puts(hbaseOrm.getHbaseTable(), rows);
|
|
|
+ if (i % config.getHbaseMapping().getCommitBatch() == 0 && !rows.isEmpty()) {
|
|
|
+ hbaseTemplate.puts(hbaseMapping.getHbaseTable(), rows);
|
|
|
rows.clear();
|
|
|
complete = true;
|
|
|
}
|
|
@@ -242,7 +242,7 @@ public class HbaseSyncService {
|
|
|
index++;
|
|
|
}
|
|
|
if (!complete && !rows.isEmpty()) {
|
|
|
- hbaseTemplate.puts(hbaseOrm.getHbaseTable(), rows);
|
|
|
+ hbaseTemplate.puts(hbaseMapping.getHbaseTable(), rows);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -252,45 +252,45 @@ public class HbaseSyncService {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- MappingConfig.HbaseOrm hbaseOrm = config.getHbaseOrm();
|
|
|
+ MappingConfig.HbaseMapping hbaseMapping = config.getHbaseMapping();
|
|
|
|
|
|
// if (!validHTable(config)) {
|
|
|
// logger.error("HBase table '{}' not exists",
|
|
|
- // hbaseOrm.getHbaseTable());
|
|
|
+ // hbaseMapping.getHbaseTable());
|
|
|
// return;
|
|
|
// }
|
|
|
|
|
|
- MappingConfig.ColumnItem rowKeyColumn = hbaseOrm.getRowKeyColumn();
|
|
|
+ MappingConfig.ColumnItem rowKeyColumn = hbaseMapping.getRowKeyColumn();
|
|
|
boolean complete = false;
|
|
|
int i = 1;
|
|
|
Set<byte[]> rowKeys = new HashSet<>();
|
|
|
for (Map<String, Object> r : data) {
|
|
|
byte[] rowKeyBytes;
|
|
|
|
|
|
- if (hbaseOrm.getRowKey() != null) {
|
|
|
- String[] rowKeyColumns = hbaseOrm.getRowKey().trim().split(",");
|
|
|
+ if (hbaseMapping.getRowKey() != null) {
|
|
|
+ String[] rowKeyColumns = hbaseMapping.getRowKey().trim().split(",");
|
|
|
String rowKeyVale = getRowKeys(rowKeyColumns, r);
|
|
|
rowKeyBytes = Bytes.toBytes(rowKeyVale);
|
|
|
} else if (rowKeyColumn == null) {
|
|
|
// 如果不需要类型转换
|
|
|
Map<String, Object> rowKey = data.get(0);
|
|
|
- rowKeyBytes = typeConvert(null, hbaseOrm, rowKey.values().iterator().next());
|
|
|
+ rowKeyBytes = typeConvert(null, hbaseMapping, rowKey.values().iterator().next());
|
|
|
} else {
|
|
|
Object val = r.get(rowKeyColumn.getColumn());
|
|
|
- rowKeyBytes = typeConvert(rowKeyColumn, hbaseOrm, val);
|
|
|
+ rowKeyBytes = typeConvert(rowKeyColumn, hbaseMapping, val);
|
|
|
}
|
|
|
if (rowKeyBytes == null) throw new RuntimeException("rowKey值为空");
|
|
|
rowKeys.add(rowKeyBytes);
|
|
|
complete = false;
|
|
|
- if (i % config.getHbaseOrm().getCommitBatch() == 0 && !rowKeys.isEmpty()) {
|
|
|
- hbaseTemplate.deletes(hbaseOrm.getHbaseTable(), rowKeys);
|
|
|
+ if (i % config.getHbaseMapping().getCommitBatch() == 0 && !rowKeys.isEmpty()) {
|
|
|
+ hbaseTemplate.deletes(hbaseMapping.getHbaseTable(), rowKeys);
|
|
|
rowKeys.clear();
|
|
|
complete = true;
|
|
|
}
|
|
|
i++;
|
|
|
}
|
|
|
if (!complete && !rowKeys.isEmpty()) {
|
|
|
- hbaseTemplate.deletes(hbaseOrm.getHbaseTable(), rowKeys);
|
|
|
+ hbaseTemplate.deletes(hbaseMapping.getHbaseTable(), rowKeys);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -300,9 +300,9 @@ public class HbaseSyncService {
|
|
|
if (old == null || old.isEmpty() || data == null || data.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
- MappingConfig.HbaseOrm hbaseOrm = config.getHbaseOrm();
|
|
|
+ MappingConfig.HbaseMapping hbaseMapping = config.getHbaseMapping();
|
|
|
|
|
|
- String[] rowKeyColumns = hbaseOrm.getRowKey().trim().split(",");
|
|
|
+ String[] rowKeyColumns = hbaseMapping.getRowKey().trim().split(",");
|
|
|
|
|
|
int index = 0;
|
|
|
int i = 1;
|
|
@@ -343,13 +343,13 @@ public class HbaseSyncService {
|
|
|
|
|
|
rowKeys.add(oldRowKeyBytes);
|
|
|
HRow row = new HRow(newRowKeyBytes);
|
|
|
- convertData2Row(hbaseOrm, row, r);
|
|
|
+ convertData2Row(hbaseMapping, row, r);
|
|
|
rows.add(row);
|
|
|
complete = false;
|
|
|
- if (i % config.getHbaseOrm().getCommitBatch() == 0 && !rows.isEmpty()) {
|
|
|
- hbaseTemplate.deletes(hbaseOrm.getHbaseTable(), rowKeys);
|
|
|
+ if (i % config.getHbaseMapping().getCommitBatch() == 0 && !rows.isEmpty()) {
|
|
|
+ hbaseTemplate.deletes(hbaseMapping.getHbaseTable(), rowKeys);
|
|
|
|
|
|
- hbaseTemplate.puts(hbaseOrm.getHbaseTable(), rows);
|
|
|
+ hbaseTemplate.puts(hbaseMapping.getHbaseTable(), rows);
|
|
|
rowKeys.clear();
|
|
|
rows.clear();
|
|
|
complete = true;
|
|
@@ -358,8 +358,8 @@ public class HbaseSyncService {
|
|
|
index++;
|
|
|
}
|
|
|
if (!complete && !rows.isEmpty()) {
|
|
|
- hbaseTemplate.deletes(hbaseOrm.getHbaseTable(), rowKeys);
|
|
|
- hbaseTemplate.puts(hbaseOrm.getHbaseTable(), rows);
|
|
|
+ hbaseTemplate.deletes(hbaseMapping.getHbaseTable(), rowKeys);
|
|
|
+ hbaseTemplate.puts(hbaseMapping.getHbaseTable(), rows);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -367,32 +367,32 @@ public class HbaseSyncService {
|
|
|
* 根据对应的类型进行转换
|
|
|
*
|
|
|
* @param columnItem 列项配置
|
|
|
- * @param hbaseOrm hbase映射配置
|
|
|
+ * @param hbaseMapping hbase映射配置
|
|
|
* @param value 值
|
|
|
* @return 复合字段rowKey
|
|
|
*/
|
|
|
- private static byte[] typeConvert(MappingConfig.ColumnItem columnItem, MappingConfig.HbaseOrm hbaseOrm,
|
|
|
+ private static byte[] typeConvert(MappingConfig.ColumnItem columnItem, MappingConfig.HbaseMapping hbaseMapping,
|
|
|
Object value) {
|
|
|
if (value == null) {
|
|
|
return null;
|
|
|
}
|
|
|
byte[] bytes = null;
|
|
|
if (columnItem == null || columnItem.getType() == null || "".equals(columnItem.getType())) {
|
|
|
- if (MappingConfig.Mode.STRING == hbaseOrm.getMode()) {
|
|
|
+ if (MappingConfig.Mode.STRING == hbaseMapping.getMode()) {
|
|
|
bytes = Bytes.toBytes(value.toString());
|
|
|
- } else if (MappingConfig.Mode.NATIVE == hbaseOrm.getMode()) {
|
|
|
+ } else if (MappingConfig.Mode.NATIVE == hbaseMapping.getMode()) {
|
|
|
bytes = TypeUtil.toBytes(value);
|
|
|
- } else if (MappingConfig.Mode.PHOENIX == hbaseOrm.getMode()) {
|
|
|
+ } else if (MappingConfig.Mode.PHOENIX == hbaseMapping.getMode()) {
|
|
|
PhType phType = PhType.getType(value.getClass());
|
|
|
bytes = PhTypeUtil.toBytes(value, phType);
|
|
|
}
|
|
|
} else {
|
|
|
- if (hbaseOrm.getMode() == MappingConfig.Mode.STRING) {
|
|
|
+ if (hbaseMapping.getMode() == MappingConfig.Mode.STRING) {
|
|
|
bytes = Bytes.toBytes(value.toString());
|
|
|
- } else if (hbaseOrm.getMode() == MappingConfig.Mode.NATIVE) {
|
|
|
+ } else if (hbaseMapping.getMode() == MappingConfig.Mode.NATIVE) {
|
|
|
Type type = Type.getType(columnItem.getType());
|
|
|
bytes = TypeUtil.toBytes(value, type);
|
|
|
- } else if (hbaseOrm.getMode() == MappingConfig.Mode.PHOENIX) {
|
|
|
+ } else if (hbaseMapping.getMode() == MappingConfig.Mode.PHOENIX) {
|
|
|
PhType phType = PhType.getType(columnItem.getType());
|
|
|
bytes = PhTypeUtil.toBytes(value, phType);
|
|
|
}
|