के मिलान के मामले के माध्यम से स्पार्कएसक्यूएल में किसी प्रकार के आधार पर मूल्य कनवर्ट करें क्या स्कैला में एक पैरामीट्रिक प्रकार से मिलान करना संभव है? आइए कहें कि मेरे पास एक ऐसा फ़ंक्शन है जो दो पैरामीटर प्राप्त करता है: value
और type
। मैं एक प्रकार के रूपांतरण करने के लिए पैटर्न मिलान का उपयोग करना चाहता हूं।टाइप
कुछ इस तरह:
datatype match {
case IntegerType => return value.toInt
case FloatType => return value.toFloat
case StringType => return value
case DecimalType(_,_) => return BigDecimal(value) // this is not working
case _ => return strrepr
}
यहाँ DecimalType
परिशुद्धता आवश्यक परिशुद्धता निर्दिष्ट करने के लिए दो पैरामीटर स्वीकार करता है। यह उदाहरण के लिए हो सकता है:
लिए
case DecimalType => return BigDecimal(value)
मैं:error: pattern type is incompatible with expected type; found : org.apache.spark.sql.types.DecimalType.type required: org.apache.spark.sql.types.DataType Note: if you intended to match against the class, try `case DecimalType(_,_)`
case DecimalType(_,_) => return BigDecimal(value)
लिएorg.apache.spark.sql.types.DecimalType = DecimalType(10,2)
मैं कई विकल्प और कुछ भी नहीं की कोशिश की है काम कर रहा है मुझे मिलता है:
error: result type Boolean of unapply defined in method unapply in object DecimalType does not conform to Option[_] or Boolean
case DecimalType[_,_] => return BigDecimal(value)
के लिए मैं मिलता है:error: org.apache.spark.sql.types.DecimalType does not take type parameters
दशमलव प्रकार क्या है? यदि आपका मतलब है [org.apache.spark.sql.types.DecimalType] (https://spark.apache.org/docs/1.4.1/api/scala/index.html#org.apache.spark.sql.types DecimalType), यह मेरे लिए एक पैरामीट्रिक प्रकार की तरह दिखता नहीं है। – Suma