flink读取不到文件_flink 读取 CSV 文件,并将 DataStream 转 Table 对象

package com.myflink

import java.lang.reflect.Field

import java.util

import org.apache.flink.api.common.typeinfo._

import org.apache.flink.api.java.io.{PojoCsvInputFormat, RowCsvInputFormat}

import org.apache.flink.api.java.typeutils.{PojoField, PojoTypeInfo}

import org.apache.flink.core.fs.Path

import org.apache.flink.streaming.api.TimeCharacteristic

import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor

import org.apache.flink.streaming.api.windowing.time.Time

import org.apache.flink.table.api.Tumble

import org.apache.flink.table.api.scala._

import org.apache.flink.types.Row

object Main {

def main(args: Array[String]): Unit = {

import org.apache.flink.streaming.api.scala._

val env = StreamExecutionEnvironment.getExecutionEnvironment;

env.setParallelism(1);

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);

val senSor = SenSor("a", 0L, 0.2);

val lst = new util.ArrayList[PojoField]();

val arrFields: Array[Field] = senSor.getClass.getDeclaredFields;

for (field

lst.add(new PojoField(field, TypeInformation.of(field.getType)));

}

val path = new Path("D:\\allspace\\flink0906\\src\\main\\resources\\input\\test.csv");

val ds: DataStream[SenSor] = env

.createInput(new PojoCsvInputFormat(path, new PojoTypeInfo(classOf[SenSor], lst)))

.assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor[SenSor](Time.seconds(10)) {

override def extractTimestamp(element: SenSor): Long = element.timestamp * 1000

});

val tableEnv = StreamTableEnvironment.create(env);

val table = tableEnv.fromDataStream(ds, 'id, 'timestamp.rowtime, 'uempearture);

table.window(Tumble over 10.seconds on 'timestamp as 'tw)

.groupBy('id, 'tw)

.select('id, 'id.count, 'uempearture.avg, 'tw.end)

.toRetractStream[Row].print()

env.execute();

}

}

case class SenSor(var id: String, var timestamp: Long, var uempearture: Double) {};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值