【详述】streamLoad生成衍生列,使用udf时报错
【背景】创建udf、在streamLoad中使用udf生成衍生列字段
【业务影响】
【是否存算分离】否
【StarRocks版本】3.5.10
【集群规模】例如:3fe(1 follower+2observer)+3be(fe与be混部)
【机器信息】CPU虚拟核/内存/网卡,例如:48C/64G/万兆
【联系方式】
先创建udf,非常简单的udf,返回固定字符串aaa
CREATE GLOBAL FUNCTION if not exists test() RETURNS string PROPERTIES (
“symbol” = “com.sgp.module.udf.CallGetApi”,
“file” = “http://10.30.19.31:8081/api-udf-1.0-SNAPSHOT-jar-with-dependencies.jar”,
“type” = “StarrocksJar”
);
GRANT USAGE ON GLOBAL FUNCTION test() TO root;
然后通过streamLoad上报数据
curl --location-trusted -u root:passwd
-H “Expect:100-continue”
-H “column_separator:,”
-H “columns:aa,bb=test()”
-T test.csv -XPUT
http://kube-starrocks-fe-service:9030/api/sgp_dw/test_aaa/_stream_load
请求头columns中,bb字段通过udf函数生成,执行后报错
{
“TxnId”: 19221645,
“Label”: “79fbfb24-0bd3-4ffb-a050-6c6c66eae94b”,
“Db”: “sgp_dw”,
“Table”: “test_aaa”,
“Status”: “Fail”,
“Message”: “java.lang.NullPointerException: Cannot invoke “com.starrocks.sql.ast.UserIdentity.isEphemeral()” because “userIdentity” is null”,
“NumberTotalRows”: 0,
“NumberLoadedRows”: 0,
“NumberFilteredRows”: 0,
“NumberUnselectedRows”: 0,
“LoadBytes”: 0,
“LoadTimeMs”: 0,
“BeginTxnTimeMs”: 1,
“StreamLoadPlanTimeMs”: 2,
“ReadDataTimeMs”: 0,
“WriteDataTimeMs”: 0,
“CommitAndPublishTimeMs”: 0
}
用内置函数或者不用衍生列就是正常上报的