我有一个文件流,每个文件包含由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”。
答案 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)