2016-11-06 15 views
7

स्कैला/स्पार्क में, रिक्त स्ट्रिंग को कैसे परिवर्तित करें, जैसे "", "नल" में कनवर्ट करें? इसे पहले ट्रिम करने की आवश्यकता है और फिर "न्यूल" में कनवर्ट करें। धन्यवाद।स्पार्क डेटाफ्रेम ट्रिम कॉलम और

dataframe.na.replace("cut", Map(" " -> "NULL")).show //wrong 

उत्तर

6

आप इसे करने के लिए एक सरल कार्य बना सकते हैं। सबसे पहले आयात के एक जोड़े:

import org.apache.spark.sql.functions.{trim, length, when} 
import org.apache.spark.sql.Column 

और परिभाषा:

def emptyToNull(c: Column) = when(length(trim(c)) > 0, c) 

अंत में एक त्वरित परीक्षण:

val df = Seq(" ", "foo", "", "bar").toDF 
df.withColumn("value", emptyToNull($"value")) 

जो निम्नलिखित परिणाम देगा चाहिए:

+-----+ 
|value| 
+-----+ 
| null| 
| foo| 
| null| 
| bar| 
+-----+ 

हैं आप खाली एस को प्रतिस्थापित करना चाहते हैं

def emptyToNullString(c: Column) = when(length(trim(c)) > 0, c).otherwise("NULL") 
: तार के साथ tring "NULL आप otherwise खंड जोड़ सकते हैं
संबंधित मुद्दे