in flink-connector-hbase-base/src/main/java/org/apache/flink/connector/hbase/util/HBaseTableSchema.java [261:299]
public DataType convertToDataType() {
String[] familyNames = getFamilyNames();
if (rowKeyInfo != null) {
String[] fieldNames = new String[familyNames.length + 1];
DataType[] fieldTypes = new DataType[familyNames.length + 1];
for (int i = 0; i < fieldNames.length; i++) {
if (i == rowKeyInfo.rowKeyIndex) {
fieldNames[i] = rowKeyInfo.rowKeyName;
fieldTypes[i] = rowKeyInfo.rowKeyType;
} else {
int familyIndex = i < rowKeyInfo.rowKeyIndex ? i : i - 1;
String family = familyNames[familyIndex];
fieldNames[i] = family;
fieldTypes[i] =
getRowDataType(
getQualifierNames(family), getQualifierDataTypes(family));
}
}
DataTypes.Field[] fields = new DataTypes.Field[fieldNames.length];
for (int i = 0; i < fields.length; i++) {
fields[i] = DataTypes.FIELD(fieldNames[i], fieldTypes[i]);
}
return DataTypes.ROW(fields);
} else {
String[] fieldNames = new String[familyNames.length];
DataType[] fieldTypes = new DataType[familyNames.length];
for (int i = 0; i < fieldNames.length; i++) {
String family = familyNames[i];
fieldNames[i] = family;
fieldTypes[i] =
getRowDataType(getQualifierNames(family), getQualifierDataTypes(family));
}
DataTypes.Field[] fields = new DataTypes.Field[fieldNames.length];
for (int i = 0; i < fields.length; i++) {
fields[i] = DataTypes.FIELD(fieldNames[i], fieldTypes[i]);
}
return DataTypes.ROW(fields);
}
}