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