我将文件中的值作为逗号分隔。现在,我希望将此数据转换为键值对(地图)。我知道我们可以将值拆分并存储在如下所示的数组中。
val prop_file = sc.textFile("/prop_file.txt")
prop_file.map(_.split(",").map(s => Array(s)))
有没有办法将数据存储为spark-scala中的Map?
答案 0 :(得分:1)
假设文件的每一行都包含2个值,其中第一个单词是Key,next是value,用空格分隔: -
A 1
B 2
C 3
可以这样做: -
val file = sc.textFile("/prop_file.txt")
val words = file.flatMap(x => createDataMap(x))
这是你的功能 - createDataMap
def createDataMap(data:String): Map[String, String] = {
val array = data.split(",")
//Creating the Map of values
val dataMap = Map[String, String](
(array(0) -> array(1)),
(array(2) -> array(3))
)
return dataMap
}
接下来,要从RDD中检索键/值,您可以利用以下操作: -
//This will print all elements of RDD
words.foreach(f=>println(f))
//Or You can filter the elements too.
words.filter(f=>f._1.equals("A"))
答案 1 :(得分:0)
Sumit,我使用下面的代码来检索特定键的值,并且它有效。
val words = file.flatMap(x => createDataMap(x)).collectAsMap
val valueofA = props("A")
print(valueofA)
这给了我一个结果