开发者社区> 问答> 正文

EMR集群使用starrocks组件执行Stream Load作业报错

已解决

EMR集群使用starrocks组件执行Stream Load作业报错

展开
收起
提个问题 2024-06-29 10:01:43 6 0
1 条回答
写回答
取消 提交回答
  • 开发者社区问答官方账号
    官方回答
    采纳回答

    问题描述:

    执行实时flink任务,通过streamload方式写入数据到starrocks表中报错:DorisSinkException: Stream Load Status [Fail], Message [no valid Basic authorization].Detail [No ErrorURL Found]

    其中flink代码中的url地址写的是starrocks集群的fe节点公网ip+端口

    解决方案:

    Stream Load是一种通过HTTP协议进行PUT操作,将数据导入到Doris。数据导入是同步操作,导入完成会返回成功或失败的response。执行流程为:

    1. client向FE请求,FE找出一个BE作为Coordinator(其中每次的Coordinator可能是不同的BE,减少了对be集群压力
    2. client向Coordinator发送数据,Coordinator对数据进行分发,发送到各个BE
    3. Coordinator向client返回发送的结果

    其中,在FE重定向到作为Coordinator的BE过程中,python的requests虽然可以自动实现重定向到Coordinator,但是不能携带账号和密码进行认证,会报异常:no valid Basic authorization。

    因此可以从如下2方面避免该问题:

    1. flink代码中的url地址直接写be节点的ip和端口,避免直连fe,在FE重定向至BE过程中丢失账密信息,从而导致报错。
    2. 可在flink代码中添加:request.AllowAutoRedirect = false; 这样可以避免doris直接重定向。相当于访问两次,第一次访问fe的url,获取分配的be的url;第二次再访问be的url,这样就不会有重定向丢失账密的问题
    2024-06-29 10:01:45
    赞同 6 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
生命密码-基因数据的EMR实践 立即下载
超大规模机器学习在EMR的实践 立即下载
EMR弹性低成本离线大数据分析最佳实践 立即下载