Akka流-在行中使用\ n时,基于换行符将字节码流分成块

Arn*_*rno 1 scala akka akka-stream

我当前正在实现一个Akka Stream Scala应用程序,该应用程序读入一个压缩文件,其中包含以下格式的推文(使用json):

{"created_at": "Mon Nov 04 14:37:29 +0000 2019", ... }
{"created_at": "Mon Nov 04 14:37:29 +0000 2019", ... }

Run Code Online (Sandbox Code Playgroud)

我已经成功读取了文件的解压缩信息,但是现在我试图将流分成多个块,以使每个块包含一个tweet表示,该表示对应于上面的代码片段中的一行。

我尝试使用以下作为实现此目的的流程:

Framing.delimiter(ByteString("\n"), 50000)

Run Code Online (Sandbox Code Playgroud)

但是问题是,在json中有一个属性“ full_text”,表示推文的内容。该文本可能包含\ n字符,导致上述代码段不起作用,因为它也会在这些\ n文本字符处拆分。下面的例子。

{"created_at": "Mon Nov 04 14:37:29 +0000 2019", "full_text": "I love to eat \n CHEESE!!", ... }

Run Code Online (Sandbox Code Playgroud)

有谁知道这个问题的好解决方案?

ave*_*rin 5

似乎Akka的JSON框架就是为此目的而设计的:

https://doc.akka.io/docs/alpakka/current/data-transformations/json.html