दिलचस्प पोस्ट
JQuery के साथ बॉक्स-छाया को एनिमेट करने का सही तरीका एक असाइनमेंट क्या वापस करता है? कैसे एक सूचक पता और सूचक सूचक मूल्य बढ़ाना? पदावनत: mysql_connect () स्प्रिंग सुरक्षा और @ एसिंक एक प्लगइन मॉड्यूल से dll.config पढ़ना (app.config नहीं!) सीएसएस पृष्ठभूमि-आकार: मोबाइल सफारी के लिए कवर प्रतिस्थापन आप बिल्डर पैटर्न का उपयोग कब करेंगे? मैं एंड्रॉइड में वेबव्यू पर ऑनक्लिक इवेंट कैसे प्राप्त कर सकता हूं? मैं कैसे जांच सकता हूं कि कोई शब्द PHP का उपयोग करते हुए किसी अन्य स्ट्रिंग में है? टाइपक्रिप्ट फ़ाइल में परिभाषा फ़ाइल के बिना जेएस लाइब्रेरी कैसे आयात करें सीएसएस अगले तत्व ओरेकल एसक्यूएल (कोई कार्य या प्रक्रिया नहीं) में व्यावसायिक दिनों की गणना करें दूरस्थ अंत में अप्रत्याशित रूप से लटका दिया गया जबकि git क्लोनिंग पीएसआर -0 और पीएसआर -4 में क्या अंतर है?

अपडेट की हुई पंक्ति में डेटाफ्रेम पंक्ति को मैप करने का प्रयास करते समय एन्कोडर त्रुटि

जब मैं नीचे बताए अनुसार मेरे कोड में एक ही चीज़ करने की कोशिश कर रहा हूं I

dataframe.map(row => { val row1 = row.getAs[String](1) val make = if (row1.toLowerCase == "tesla") "S" else row1 Row(row(0),make,row(2)) }) 

मैंने यहां से उपरोक्त संदर्भ लिया है: स्कला: मैं स्केल का उपयोग करके डेटाफ्रेम में मान को कैसे बदल सकता हूं लेकिन मुझे एन्कोडर त्रुटि मिल रही है

डेटासेट में संग्रहीत प्रकार के लिए एन्कोडर खोजने में असमर्थ आदिम प्रकार (इंट, एस ट्रिंग, आदि) और उत्पाद प्रकार (केस क्लास) स्पार्क.आईएम प्लिकिट्स आयात करके समर्थित हैं। अन्य प्रकारों के क्रमबद्ध करने के लिए समर्थन भविष्य के रिलीज में जोड़े जाएंगे।

नोट: मैं स्पार्क 2.0 का उपयोग कर रहा हूं!

Solutions Collecting From Web of "अपडेट की हुई पंक्ति में डेटाफ्रेम पंक्ति को मैप करने का प्रयास करते समय एन्कोडर त्रुटि"

यहां अप्रत्याशित कुछ भी नहीं है आप कोड का उपयोग करने का प्रयास कर रहे हैं जो स्पार्क 1.x के साथ लिखा गया है और अब स्पार्क 2.0 में समर्थित नहीं है:

  • DataFrame.map में ((Row) ⇒ T)(ClassTag[T]) ⇒ RDD[T]
  • 2.x Dataset[Row].map है ((Row) ⇒ T)(Encoder[T]) ⇒ Dataset[T]

ईमानदार होने के लिए यह 1.x में बहुत अधिक अर्थ नहीं था। संस्करण का स्वतंत्र रूप से आप केवल DataFrame एपीआई का उपयोग कर सकते हैं:

 import org.apache.spark.sql.functions.{when, lower} val df = Seq( (2012, "Tesla", "S"), (1997, "Ford", "E350"), (2015, "Chevy", "Volt") ).toDF("year", "make", "model") df.withColumn("make", when(lower($"make") === "tesla", "S").otherwise($"make")) 

यदि आप वास्तव में map का उपयोग करना चाहते हैं, तो आपको स्थैतिक रूप से टाइप किए गए Dataset उपयोग करना चाहिए:

 import spark.implicits._ case class Record(year: Int, make: String, model: String) df.as[Record].map { case tesla if tesla.make.toLowerCase == "tesla" => tesla.copy(make = "S") case rec => rec } 

या कम से कम एक ऑब्जेक्ट वापस लौटाएगा जिसमें अन्तर्निर्मित एनकोडर होगा:

 df.map { case Row(year: Int, make: String, model: String) => (year, if(make.toLowerCase == "tesla") "S" else make, model) } 

अंत में यदि कुछ पूरी तरह से पागल कारणों से आप वास्तव में Dataset[Row] पर नक्शा चाहते हैं तो आपको आवश्यक एन्कोडर प्रदान करना होगा:

 import org.apache.spark.sql.catalyst.encoders.RowEncoder import org.apache.spark.sql.types._ import org.apache.spark.sql.Row // Yup, it would be possible to reuse df.schema here val schema = StructType(Seq( StructField("year", IntegerType), StructField("make", StringType), StructField("model", StringType) )) val encoder = RowEncoder(schema) df.map { case Row(year, make: String, model) if make.toLowerCase == "tesla" => Row(year, "S", model) case row => row } (encoder)