private void parseHbaseLoadFieldRelation(String rowkey, Collection<FieldRelation> fieldRelations,
            StringBuilder sb) {
        sb.append("CAST(").append(rowkey).append(" AS STRING) AS rowkey,\n");
        Map<String, List<FieldRelation>> columnFamilyMapFields = genColumnFamilyMapFieldRelations(
                fieldRelations);
        for (Map.Entry<String, List<FieldRelation>> entry : columnFamilyMapFields.entrySet()) {
            StringBuilder fieldAppend = new StringBuilder(" ROW(");
            for (FieldRelation fieldRelation : entry.getValue()) {
                FieldInfo outputField = fieldRelation.getOutputField();
                String targetType = TableFormatUtils.deriveLogicalType(outputField.getFormatInfo()).asSummaryString();
                fieldAppend.append("CAST(").append(fieldRelation.getInputField().format()).append(" AS ")
                        .append(targetType).append(")").append(", ");
            }
            if (fieldAppend.length() > 0) {
                fieldAppend.delete(fieldAppend.lastIndexOf(","), fieldAppend.length());
            }
            fieldAppend.append("),");
            sb.append(fieldAppend);
        }
        sb.delete(sb.lastIndexOf(","), sb.length());
    }
Generate load node insert sql

@param loadNode The real data write node
@param relation The relation between nods
@param nodeMap The node map
@return Insert sql
inlong-sort/sort-core/src/main/java/org/apache/inlong/sort/parser/impl/FlinkSqlParser.java