在Apache Flink中解析Kafka的数据

时间:2016-05-17 11:00:23

标签: apache-flink flink-streaming

我刚刚开始使用Apache Flink(Scala API),我的问题如下: 我试图根据Flink站点的一个例子将数据从Kafka传输到Apache Flink:

val stream =
  env.addSource(new FlinkKafkaConsumer09("testing", new SimpleStringSchema() , properties))

一切正常,stream.print()语句在屏幕上显示以下内容:

2018-05-16 10:22:44 AM | 1 | 11 | -71.16 | 40.27

我想使用案例类来加载数据,我尝试过使用

flatMap(p=>p.split("|")) 

但它一次只能将数据分成一个字符。

基本上,预期结果是能够填充案例类的5个字段,如下所示

  field(0)=2018-05-16 10:22:44 AM
  field(1)=1
  field(2)=11
  field(3)=-71.16 
  field(4)=40.27

但现在正在做:

   field(0) = 2
   field(1) = 0
   field(3) = 1
   field(4) = 8 
等等......

非常感谢任何建议。

提前谢谢

弗兰克

1 个答案:

答案 0 :(得分:3)

问题在于String.split的用法。如果使用String调用它,则该方法希望它是正则表达式。因此,p.split("\\|")将是输入数据的正确正则表达式。或者,您也可以调用指定分隔字符split的{​​{1}}变体。两种解决方案都可以为您提供所需的结果。