使用 Spark Streaming 在一行中分隔键和值

separating key and value in a line using Spark Streaming

我有一个文件流,每个文件包含由 key:value 组成的行 例如,文件如下:

key1:value1
key2:value2
key3:value3

因此,我正在使用 Spark Streaming 检测文件是否到达 HDFS,我需要做的是将这些行的每个值放入 HBase(HBase 的列由键组成) 如果行的类型是 "String" 将键与值分开会很容易,但我拥有的是 DStream[String],如果我应用 DStream.flatmap(_.split(":" )) 我会明白这些话,但我做不到 :

val separated = String.split(":")
val key = separated(0)
val value = separated(1)

我尝试使用 .ToString 将 DStream 转换为字符串,当我使用 spark-submit 执行脚本时出现错误 "ArrayOutOfBoundException"。

val rdd = sc.parallelize(Seq("key1:value1", "key2:value2"))

rdd.map(_.split(":")).collect
// Array[Array[String]] = Array(Array(key1, value1), Array(key2, value2))

rdd.map(_.split(":")(0)).collect
// Array[String] = Array(key1, key2)