apache-spark
Spark에서 JSON 처리하기
수색…
Gson을 사용하여 JSON을 사용자 정의 클래스에 매핑
Gson
사용하면 JSON 데이터 세트를 읽고 사용자 정의 클래스 인 MyClass
매핑 할 수 있습니다.
Gson
은 직렬화 할 수 없으므로 각 실행자는 자체 Gson
객체가 필요합니다. 또한, 집행자간에 전달하기 위해서는 MyClass
를 직렬화 할 수 있어야합니다.
json 파일로 제공되는 파일은 일반적인 JSON 파일이 아닙니다. 각 행에는 별도의 자체 포함 된 유효한 JSON 객체가 있어야합니다. 결과적으로 정규 멀티 라인 JSON 파일이 실패하는 경우가 많습니다.
val sc: org.apache.spark.SparkContext // An existing SparkContext
// A JSON dataset is pointed to by path.
// The path can be either a single text file or a directory storing text files.
val path = "path/to/my_class.json"
val linesRdd: RDD[String] = sc.textFile(path)
// Mapping json to MyClass
val myClassRdd: RDD[MyClass] = linesRdd.map{ l =>
val gson = new com.google.gson.Gson()
gson.fromJson(l, classOf[MyClass])
}
Gson
객체의 생성이 너무 mapPartitions
메소드를 사용하여 객체를 최적화 할 수 있습니다. 이 프로그램을 사용하면 라인 당 대신 파티션 당 Gson
이 하나씩 Gson
.
val myClassRdd: RDD[MyClass] = linesRdd.mapPartitions{p =>
val gson = new com.google.gson.Gson()
p.map(l => gson.fromJson(l, classOf[MyClass]))
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow