如何将 RDD[String] 中的字段映射到广播?
How to map fields in RDD[String] to broad cast?
如何将特定字段从 RDD[String]
获取到具有特定字段的地图 List
。我有一个 RDD[String]
:org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[19]
每个条目都是 JSON 这种格式:
{
count: 1,
itemId: "1122334",
country: {
code: {
preferred: "USA"
},
name: {
preferred: "America"
}
},
states: "50",
self: {
otherInfo: [
],
preferred: "National Parks"
},
Rating: 4
}
如何获取只有 itemId
作为键和 self.preferred
作为值的地图列表 ({itemid , self.preferred}
):
itemId : 1122334 self.preferred : "National Parks"
itemId : 3444444 self.preferred : "State Parks"
...
在所有节点上广播生成的地图是否有效?通过进一步计算,我需要这张地图 shared/referenced。
你可以试试:
val filteredMappingsList = countryMapping.filter(x=> {
val jsonObj = new JSONObject(x)
jsonObj.has("itemId")
})
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
广播:
val broadcastedAsins = sc.broadcast(finalMapping)
如何将特定字段从 RDD[String]
获取到具有特定字段的地图 List
。我有一个 RDD[String]
:org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[19]
每个条目都是 JSON 这种格式:
{
count: 1,
itemId: "1122334",
country: {
code: {
preferred: "USA"
},
name: {
preferred: "America"
}
},
states: "50",
self: {
otherInfo: [
],
preferred: "National Parks"
},
Rating: 4
}
如何获取只有 itemId
作为键和 self.preferred
作为值的地图列表 ({itemid , self.preferred}
):
itemId : 1122334 self.preferred : "National Parks"
itemId : 3444444 self.preferred : "State Parks"
...
在所有节点上广播生成的地图是否有效?通过进一步计算,我需要这张地图 shared/referenced。
你可以试试:
val filteredMappingsList = countryMapping.filter(x=> {
val jsonObj = new JSONObject(x)
jsonObj.has("itemId")
})
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
广播:
val broadcastedAsins = sc.broadcast(finalMapping)