Apache flink 在ApacheFlink中解析来自Kafka的数据

Apache flink 在ApacheFlink中解析来自Kafka的数据,apache-flink,flink-streaming,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上午1:11

我刚刚开始使用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上午1:11-71.16:40.27

我想使用case类来加载数据,我已经尝试使用

flatMap(p=>p.split("|")) 
但它一次只拆分一个字符的数据

基本上,预期的结果是能够填充case类的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 
等等

如有任何建议,将不胜感激

先谢谢你


Frank

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

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

您所说的“一次拆分一个字符”是什么意思。也许你可以给出一个预期输出和实际输出的例子。谢谢你的消息,我已经编辑了我的帖子。你说的“一次拆分一个字符”是什么意思。也许你可以举一个预期输出和实际输出的例子。谢谢你的消息,我已经编辑了我的帖子。非常感谢,我真的很感谢你帮助一个新手。非常感谢,我真的很感谢你帮助一个新手。