Hi

你的Event类定义没有贴完整,不过有个怀疑点,你应该有一个public Event(int, String, long,
long)的构造函数,需要在Event定义里增加一个空的构造函数,类似这样
public class Event implements Serializable {
        private static final long serialVersionUID = 4826873295740075360L;
        public int t = 0;
        public String user = "";
        public long event = 0L;
        public long timestamp = LocalDateTime.nowTimeMillis();

        public Event() { }
}

Flink需要根据空的构造函数才能识别出这是一个pojo类

On Fri, Sep 23, 2022 at 5:37 PM Frank <frank6...@qq.com.invalid> wrote:

> Hi, Shammon,
>
>
> 嗯,我是该贴一下Event类,如下:
>
>
> public class Event implements Serializable {
>
>
>         private static final long serialVersionUID = 4826873295740075360L;
>
>
>         public int t = 0;
>         public String user = "";
>         public long event = 0L;
>         public long timestamp = LocalDateTime.nowTimeMillis();
>
>
> }
>
>
> 你可以看到,字段都是public。
>
>
> 我刚试著改成private然后添加getter, setter,但结果一样。
>
>
>
>
>
> ------------------ 原始邮件 ------------------
> 发件人:
>                                                   "Shammon FY"
>                                                                       <
> zjur...@gmail.com&gt;;
> 发送时间:&nbsp;2022年9月23日(星期五) 中午11:20
> 收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;"Frank"<frank6...@qq.com
> &gt;;
>
> 主题:&nbsp;Re:
> StreamTableEnvironment.fromDataStream(dataStream)如何生成T类型的Schema?
>
>
>
> Hi @frank
>
> 你没有贴你定义的Event类代码,我觉得你的Event类定义有点问题
>
> 如果需要flink识别Event的内部字段,需要将Event定义成pojo类,例如将字段都定义成public,或者可以是private,但是需要增加setXXX和getXXX函数
>
>
>
>
>
>
> On Thu, Sep 22, 2022 at 5:45 PM Frank <frank6...@qq.com.invalid&gt; wrote:
>
> DataStreamSource<Event&amp;gt; datastream = env.fromElements(
>  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new Event(0,
> "张三", 1L), new Event(0, "孙小美", 1L));
>  StreamTableEnvironment tenv = StreamTableEnvironment.create(env);
>  Table table = tenv.fromDataStream(datastream)
>  table.printSchema();
>  为什么上面代码生成table的schema是下面这样而不是Event的字段(t, user, event, timestamp)?
>  (
>  &amp;nbsp; `f0` RAW('utils.transfor.Event', '...')
>  )
>  怎么改?

回复