apache-spark
Hantering av JSON i Spark
Sök…
Kartlägga JSON till en anpassad klass med Gson
Med Gson
kan du läsa JSON-datasätt och kartlägga dem till en anpassad klass MyClass
.
Eftersom Gson
inte kan serialiseras behöver varje exekutiv sitt eget Gson
objekt. MyClass
måste också vara seriellt för att kunna skicka det mellan körarna.
Observera att de filerna som erbjuds som en json-fil inte är en typisk JSON-fil. Varje rad måste innehålla ett separat, självständigt giltigt JSON-objekt. Som en konsekvens kommer en vanlig JSON-fil med flera linjer oftast att misslyckas.
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])
}
Om skapandet av Gson
objekt blir för kostsamt mapPartitions
metoden mapPartitions
användas för att optimera det. Med det kommer det att finnas en Gson
per partition istället för per rad:
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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow