खोज…


GSON के साथ एक कस्टम क्लास में मैपिंग JSON

Gson साथ, आप JSON डेटासेट पढ़ सकते हैं और उन्हें एक कस्टम वर्ग MyClass मैप कर सकते हैं।

चूँकि Gson नहीं है, इसलिए प्रत्येक निष्पादक को अपनी Gson वस्तु की आवश्यकता Gson है। इसके अलावा, MyClass निष्पादन योग्य के बीच इसे पारित करने के लिए क्रमबद्ध होना चाहिए।

ध्यान दें कि फ़ाइल (s) जो कि 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 होगा:

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