背景:
1. Doris 2.1.7 版本:doris-2.1.7-rc03-443e87e203
2. Flink 1.20.0 版本,使用的是 Flink SQL。
3. Paimon 0.9 版本。
问题描述:
1. char 类型空格填充。
doris unique key 模型,uuid 设置为 char(32),paimon 中存储的也是 char(32),实际数据长度 22 字节,查询 paimon 返回结果正常,但是 doris 该字段的值被填充了空格,主键与非主键都会被填充。
在 Flink SQL 注册表时改为 varchar(32) 同步的数据一切正常。
2. 使用 Flink SQL 写入 doris 时如果某个字段的字节长度不足,报错提示不明显,好像不同于 DataStream API 给一个链接查看错误详情。
信息: I/O exception (java.net.SocketException) caught when processing request to {}->http://127.0.0.0:8040: Socket closed
3. Doris 创建 Paimon 的 Catalog 出现无权限查询。
这是因为在 Paimon 中开启了权限管控,其实就是在 Paimon 中创建用户,并赋予权限,例如查询、修改、写入等,对整库生效;在 Paimon 中创建 catalog 时需要添加 user、password, 但是在 Doris 创建 Paimon 的 catalog 即使加上这两个参数也不行。
Doris 创建 Paimon Catalog 语句 & 查询:
create catalog paimon_oss PROPERTIES (
"warehouse" = "oss://paimon",
"user" = "root",
"type" = "paimon",
"password" = "*XXX",
"oss.secret_key" = "*XXX",
"oss.endpoint" = "oss.xxxxx-aliyuncs.com",
"oss.access_key" = "xxxxxxxx"
);
-- 查询语句
select id from paimon_oss.ods.ods_test_table;
执行查询后的报错提示:
SQL 错误 [1105] [HY000]: errCode = 2, detailMessage = Unexpected exception: User anonymous doesn't have privilege SELECT on table ods.ods_test_table;
我感觉上述的问题很可能只是我遗漏了参数导致的,但是我在官网没有找到,特来此发帖求助。
补充
十分抱歉,前面两个问题是我个人疏忽导致的:
-
从官网看到
Doris
类型与Flink SQL
类型映射关系为:char/varchar
要映射为string
,不过这里好像将char
改为varchar
也可以正常转换,不再填充空格。不需要全部映射为Flink SQL
的String
。 -
无论是
Flink SQL
还是DataStream API
写入Doris
,当出现字节长度等问题无法写入时,都会有error
链接出现,我上述之所以说没有出现日志,是因为本地调试时log4j
没有配置好。 -
不过第三个问题,还是没有找到解决方案,希望大佬协助处理,十分感谢!