我正在关注configure a TableSource with a rowtime attribute的文档。
我注册from django.contrib import admin
from django.urls import include, path
from . import views #the dot means look at the current directory - look for a module called views
urlpatterns = [
#this is matching /music/
path('', views.index, name='index'),
path("<album_id>/", views.detail, name="detail")
字段如下
timestamp
并收到以下错误:
线程“main”中的异常org.apache.flink.table.api.ValidationException:SQL验证失败。从第1行第64列到第1行第70列:在任何表中都找不到列'rowtime' at org.apache.flink.table.calcite.FlinkPlannerImpl.validate(FlinkPlannerImpl.scala:93) 在org.apache.flink.table.api.TableEnvironment.sqlQuery(TableEnvironment.scala:561) 在oracle.flink.demo.KafkaSQLStream.main(KafkaSQLStream.java:62) 引起:org.apache.calcite.runtime.CalciteContextException:从第1行第64行到第1行第70列:在任何表中找不到列'rowtime' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在org.apache.calcite.runtime.Resources $ ExInstWithCause.ex(Resources.java:463)
答案 0 :(得分:1)
表kafka
中的字段称为timestamp
,而不是rowtime
。因此,您应该使用名称timestamp
而不是rowtime
来调用该属性。
请注意,TIMESTAMP
是SQL中的关键字,因此您应该重命名timestamp
属性或使用反引号(`)转义属性名称:
tEnv.sqlQuery(
"SELECT tenant, message, SUM(frequency) " +
"FROM kafka " +
"GROUP BY HOP(`timestamp`, INTERVAL '1' SECOND, INTERVAL '5' SECOND), tenant, message");
顺便说一下。一天的BoundedOutOfOrderTimestamps
实际上相当多。这可能会导致严重的处理延迟和状态大小,因为查询将在开始发布结果和丢弃状态之前收集数据一天。