2016-11-15 1 views
0

ID와 json 경로 인 경우 무엇이 포함되어 있는지 스파크 테이블을가집니다.jsons에서 새 테이블로 스파크 데이터 변환

+----------------------+ 
    | ID |  Path  | 
    +----------------------+ 
    | 1 | "/test.json" | 
    +----------------------+ 

은 내가 jsons의 모든 구문 분석,이 테이블을 반복해야하고, 내가 한 JSON을 구문 분석 할 수 있습니다 나는이

+----------------------------------------------+ 
    | ID | ParsedJson.Column1 | ParsedJson.Column2 | 
    +----------------------------------------------+ 
    | 1 | data 1    | data2    | 
    +----------------------------------------------+ 

같은 새 테이블을 작성해야합니다. 어떻게 모든 jsons를 구문 분석하고 위의 테이블로 데이터를 병합 할 수 있습니까?

업데이트이 후 :

case class Media(Id: Integer, content: org.apache.spark.sql.DataFrame) 
var arrayOfFrames = jsonDF.collect.map(row => {Media(row.getInt(1), sqlContext.read.json("/mnt/" + row(5)))}) 

지금 배열 [미디어] 있습니다. 데이터 프레임 내용은 파싱 된 json입니다. 그래서 내 질문에 어떻게 개체 배열이 위의 스키마 같은 DataFrame 변환 할 수 있습니다?

+0

죄송합니다. 테이블을 포맷 할 수 없습니다. ( – martonx

+0

왜 편집 할 수 없습니까? –

답변

0

마지막으로 체인화 된 맵을 사용하여이 문제를 해결했습니다.

val arrayOfFrames = filteredFramePaths.collect.map(row => { Media(
    row.getInt(1), 
    sqlContext.read.json("/mnt/" + row(5)) 
) }).map(a => 
    {Media(a.id, a.content.withColumn("frame", explode($"frames")).select ($"frame.*"))} 
).map(a => 
    a.content.withColumn("id", lit(a.id)) 
).reduce((x, y) => x.union(y)) 
관련 문제