通过Flink、scala、addSource和readCsvFile读取csv文件

通过Flink、scala、addSource和readCsvFile读取csv文件,scala,csv,apache-flink,complex-event-processing,Scala,Csv,Apache Flink,Complex Event Processing,我想使用by Flink、Scala语言和addSource和readCsvFile函数读取csv文件。我没有找到任何简单的例子。我只发现:这对我来说太复杂了 在定义中:StreamExecutionEnvironment.addSource(sourceFunction)是否应仅将readCsvFile用作sourceFunction 阅读后,我想使用CEP(复杂事件处理)。readCsvFile()仅作为Flink的DataSet(batch)API的一部分提供,不能与DataStream(

我想使用by Flink、Scala语言和addSource和readCsvFile函数读取csv文件。我没有找到任何简单的例子。我只发现:这对我来说太复杂了

在定义中:StreamExecutionEnvironment.addSource(sourceFunction)是否应仅将readCsvFile用作sourceFunction

阅读后,我想使用CEP(复杂事件处理)。

readCsvFile()仅作为Flink的DataSet(batch)API的一部分提供,不能与DataStream(streaming)API一起使用。这是一个很好的例子,虽然它可能与你想做的事情无关

readTextFile()和readFile()是StreamExecutionEnvironment上的方法,它们不实现SourceFunction接口——它们不是用于addSource(),而是用于addSource()。下面是一个使用DataStream API加载CSV的示例

另一个选项是使用表API和。给你。如果您采用这种方法,则需要使用StreamTableEnvironment.toAppendStream()在使用CEP之前将表流转换为数据流


请记住,所有这些方法都只需读取文件一次,并从其内容创建一个有界流。如果您想要一个读取无限CSV流并等待追加新行的源,则需要另一种方法。您可以使用自定义源、socketTextStream或类似Kafka的内容。

如果您有一个包含3个字段的CSV文件—字符串、长字符串和整数

然后做下面的事情

val input=benv.readCsvFile[(String,Long,Integer)]("hdfs:///path/to/your_csv_file")

PS:-我使用的是flink shell,这就是为什么我有benv

你检查过这些示例了吗?是的,但我没有找到addSource()与readCsvFile()的组合。。甚至readTextFile()和readFile()。有可能吗?因为:我的目的是通过Flink读取一次有界csv文件并进行CEP类型分析。从这个意义上说,CsvTableSource可能是一个不错的选择。实际上,我还对并行地从许多csv文件进行迭代搜索类型分析感兴趣。这可能不可能由纯CEP实现?关于CsvTableSource,是否可以确定“时间戳”列并为其设置TimeCharacteristic.EventTime,以及设置EventDelay和SpeedFactor?