本文为您介绍实时计算Flink版的SQL常见问题,包括作业开发报错和作业运维报错。

报错:undefined

报错:Object '****' not found

  • 报错详情
    单击运行后,验证报错详情如下。报错详情
  • 报错原因

    在DDL和DML同在一个文本中提交运行时,DDL没有声明为CREATE TEMPORARY TABLE。

  • 解决方案

    在DDL和DML同在一个文本中提交运行时,DDL需要声明为CREATE TEMPORARY TABLE,而不是声明为CREATE TABLE。

报错:Only a single 'INSERT INTO' is supported

  • 报错详情
    单击运行后,验证报错详情如下。报错详情
  • 报错原因

    多个DML语句没有写在关键语句BEGIN STATEMENT SET;END;之间。

  • 解决方案

    将多个DML语句写在BEGIN STATEMENT SET;END;之间。详情请参见DML数据操作语句(INSERT INTO)

报错:exceeded quota: resourcequota

  • 报错详情
    作业启动过程中报错。报错
  • 报错原因

    当前项目空间资源不足导致作业启动失败。

  • 解决方案

    您需要对项目资源进行资源变配,详情请参见单项目资源变配

报错:Exceeded checkpoint tolerable failure threshold

  • 报错详情
    作业运行过程中报错。详情
  • 报错原因

    未设置任务允许Checkpoint失败的次数,系统默认Checkpoint失败一次就触发一次Failover。

  • 解决方案
    1. 在作业开发页面右侧,单击高级配置
    2. 更多Flink配置文本框,输入如下参数。
      execution.checkpointing.tolerable-failed-checkpoints: num
      您需要设置num值来调整任务允许Checkpoint失败的次数。num需要为0或正整数。如果num为0时,则表示不允许存在任何Checkpoint异常或者失败。

报错:Flink version null is not configured for sql

  • 报错详情
    StatusRuntimeException: INTERNAL: Flink version null is not configured for sql.
  • 报错原因

    系统升级至VVR 4.0.8,导致作业的Flink计算引擎版本信息没有了。

  • 解决方案
    在作业开发页面右侧高级配置面版中,配置正确的Flink计算引擎版本。引擎版本
    说明 如果您需要使用SQL Preview功能,则还需要检查Session集群页面的引擎版本是否选择正确。

报错:java.util.concurrent.CompletionException: java.lang.IllegalArgumentException

  • 报错详情
     Caused by: java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: The bucket name "fakeBucket" is invalid. A bucket name must: 1) be comprised of lower-case characters, numbers or dash(-); 2) start with lower case or numbers; 3) be between 3-63 characters long. 
  • 报错原因

    您在作业高级配置面板的更多Flink配置中,配置了state.backend参数,但未配置对应的state.checkpoints.dir参数。

  • 解决方案
    配置了state.backend参数,必须配置对应的state.checkpoints.dir参数。
    说明 您也可以直接删除state.backend参数。

报错:The difference between the request time and the current time is too large

  • 报错详情
    Caused by: org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.OSSException: The difference between the request time and the current time is too large.
    [ErrorCode]: RequestTimeTooSkewed
    [RequestId]: 61691C47AF60CA3639812A28
    [HostId]: oss-bucket-name.oss-cn-shanghai-internal.aliyuncs.com
    [ResponseError]:
    <?xml version="1.0" encoding="UTF-8"?>
    <Error>
      <Code>RequestTimeTooSkewed</Code>
      <Message>The difference between the request time and the current time is too large.</Message>
      <RequestId>61691C47AF60C******12A28</RequestId>
      <HostId>******.oss-cn-shanghai-internal.aliyuncs.com</HostId>
      <MaxAllowedSkewMilliseconds>900000</MaxAllowedSkewMilliseconds>
      <RequestTime>2021-10-15T05:57:31.000Z</RequestTime>
      <ServerTime>2021-10-15T06:14:31.000Z</ServerTime>
    </Error>
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.common.utils.ExceptionFactory.createOSSException(ExceptionFactory.java:100) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.internal.OSSErrorResponseHandler.handle(OSSErrorResponseHandler.java:70) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.common.comm.ServiceClient.handleResponse(ServiceClient.java:257) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:140) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:70) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:83) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:145) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:102) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.internal.OSSBucketOperation.listObjects(OSSBucketOperation.java:411) ~[?:?]
        at org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss.OSSClient.listObjects(OSSClient.java:443) ~[?:?]
        at org.apache.flink.fs.shaded.hadoop3.org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystemStore.listObjects(AliyunOSSFileSystemStore.java:506) ~[?:?]
        at org.apache.flink.fs.shaded.hadoop3.org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem.getFileStatus(AliyunOSSFileSystem.java:264) ~[?:?]
        at org.apache.flink.fs.shaded.hadoop3.org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem.validatePath(AliyunOSSFileSystem.java:548) ~[?:?]
        at org.apache.flink.fs.shaded.hadoop3.org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem.mkdirs(AliyunOSSFileSystem.java:532) ~[?:?]
        at org.apache.flink.fs.shaded.hadoop3.org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:2326) ~[?:?]
        at org.apache.flink.fs.osshadoop.common.HadoopFileSystem.mkdirs(HadoopFileSystem.java:196) ~[?:?]
  • 报错原因

    您的OSS Bucket开通了版本控制功能,但未配置生命周期规则来定期清理删除标记和不必要的历史版本。过多的删除标记会导致List慢,作业启动失败的问题。详情请参见注意事项

  • 解决方案

    在OSS上配置生命周期规则来定期清理删除标记和不必要的历史版本,详情请参见使用生命周期管理文件版本

INFO:org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss

  • 报错详情报错详情
  • 报错原因

    OSS每次创建新目录时,会先检查是否存在该目录,如果不存在,就会报这个INFO信息,但该INFO信息不影响Flink作业运行。

  • 解决方案

    在日志模板中添加<Logger level="ERROR" name="org.apache.flink.fs.osshadoop.shaded.com.aliyun.oss"/>。详情请参见配置作业日志