使用Spark Streaming

时间:2016-04-05 13:16:22

标签: apache-spark 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转换为String,当我使用spark-submit执行脚本时,我收到错误“ArrayOutOfBoundException”。

1 个答案:

答案 0 :(得分:1)

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)