Open
Description
任务描述:执行Hive2Doris导入,由于hive表的字段为null,传递SelectedTab的cols结构体中type: null,导致校验不通过,无法创建同步管道任务。
相关版本: Doris2.0.7, hive客户端是2.1.1-cdh , hive 服务端:2.3.2
解决思路判断:
判断理由:mysql,oracle都执行了这部分代码进行type赋值。从xml临时文件读取selectedTab的结构,然后对其type进行JDBCTypes赋值DataType。
猜测:hive这块没有完成这一步导致此问题
public static void fillSelectedTabMeta(ISelectedTab tab,
Function<ISelectedTab, Map<String, ColumnMetaData>> tableColsMetaGetter) {
Map<String, ColumnMetaData> colsMeta = tableColsMetaGetter.apply(tab);
ColumnMetaData colMeta = null;
if (colsMeta.size() < 1) {
throw new IllegalStateException("table:" + tab.getName() + " relevant cols meta can not be null");
}
for (CMeta col : tab.getCols()) {
colMeta = colsMeta.get(col.getName());
if (colMeta == null) {
throw new IllegalStateException("col:" + col.getName() + " can not find relevant 'col' on " + tab.getName() + ",exist Keys:[" + colsMeta.keySet().stream().collect(Collectors.joining(",")) + "]");
}
col.setPk(colMeta.isPk());
col.setType(colMeta.getType());
col.setComment(colMeta.getComment());
col.setNullable(colMeta.isNullable());
}
}
Metadata
Assignees
Labels
No labels