【发布时间】:2016-09-09 04:04:40
【问题描述】:
如何从 RDD[String] 创建特定字段的 hashMap ?
{
count: 1,
itemId: "1122334",
country: {
code: {
preferred: "USA"
},
name: {
preferred: "America"
}
},
states: "50",
self: {
otherInfo: [
],
preferred: "National Parks"
},
Rating: 4
}
Ho do I get a hashmap maps which have {itemid , self.preferred} :
itemId : 1122334 self.preferred : "National Parks"
itemId : 1144444 self.preferred : "State Parks"
....
我试过这个,它工作但效率不高,因为我正在转换为 JSON Obj 并进行解析:
val filteredMappingsList = countryMapping.filter(x=> {
val jsonObj = new JSONObject(x)
jsonObj.has("itemId") && jsonObj.get("itemId").toString.startsWith("11")
})
val finalMapping = filteredMappingsList.map(x=>{
val jsonObj = new JSONObject(x);
val itemId = jsonObj.get("itemId").toString()
val preferred = jsonObj.getJSONObject("self").get("preferred ").toString()
(itemId, preferred)
}).collectAsMap
有没有其他方法可以有效地做到这一点?
【问题讨论】:
标签: scala apache-spark hashmap apache-spark-sql rdd