6
내가 가진 RDD [행] :스칼라 : String 값에 대한 GroupBy 합계를 계산하는 방법?
|---itemId----|----Country-------|---Type----------|
| 11 | US | Movie |
| 11 | US | TV |
| 101 | France | Movie |
각 행은 별도의 JSON 객체 (RDD의 각 행)입니다 내가 JSON 목록으로 결과를 저장할 수 있도록 GROUPBY 해당 itemId을 수행하는 방법 :
{"itemId" : 11,
"Country": {"US" :2 },"Type": {"Movie" :1 , "TV" : 1} },
{"itemId" : 101,
"Country": {"France" :1 },"Type": {"Movie" :1} }
RDD :
는 I 시도 :
import com.mapping.data.model.MappingUtils
import com.mapping.data.model.CountryInfo
val mappingPath = "s3://.../"
val input = sc.textFile(mappingPath)
입력의 목록은
val MappingsList = input.map(x=> {
val countryInfo = MappingUtils.getCountryInfoString(x);
(countryInfo.getItemId(), countryInfo)
}).collectAsMap
MappingsList: scala.collection.Map[String,com.mapping.data.model.CountryInfo]
def showCountryInfo(x: Option[CountryInfo]) = x match {
case Some(s) => s
}
val events = sqlContext.sql("select itemId EventList")
val itemList = events.map(row => {
val itemId = row.getAs[String](1);
val çountryInfo = showTitleInfo(MappingsList.get(itemId));
val country = if (countryInfo.getCountry() == 'unknown)' "US" else countryInfo.getCountry()
val type = countryInfo.getType()
Row(itemId, country, type)
})
어떤 사람은 제가 이것을 달성 할 수있는 방법을 알려 수 : 내가 JSON 구문 분석 및 변환을 담당 MappingUtils를 사용 CountryInfo POJO와 클래스에 매핑하고 각 줄은 JSON은 jsons?
감사합니다!
RDD [행]이 DataFrame/DataSet에서 왔습니까? RDD로 작업 [행]은 여전히 실행 가능하지만 일반적으로 이상적이지 않습니다. –
데이터 세트에서 RDD를 만들었습니다. –
@ASpotySpot이 내 RDD로 업데이트되었습니다. –