apache-spark
Omgaan met JSON in Spark
Zoeken…
JSON met Gson in een Custom Class plaatsen
Met Gson
kunt u de JSON-gegevensset lezen en toewijzen aan een aangepaste MyClass
klasse.
Aangezien Gson
niet te serialiseren is, heeft elke uitvoerder zijn eigen Gson
object nodig. MyClass
moet ook serienummerbaar zijn om het tussen uitvoerders te kunnen doorgeven.
Merk op dat het bestand dat wordt aangeboden als een json-bestand geen typisch JSON-bestand is. Elke regel moet een afzonderlijk, op zichzelf staand geldig JSON-object bevatten. Als gevolg hiervan zal een regulier JSON-bestand met meerdere regels meestal mislukken.
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])
}
Als het maken van een Gson
object te duur wordt, mapPartitions
methode mapPartitions
worden gebruikt om het te optimaliseren. Hiermee is er één Gson
per partitie in plaats van per lijn:
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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow