2017-07-31 7 views
2

各列の長さを計算し、「errorMsg」列にメッセージを追加するタスクがあります。長さに基づいてレコードをフィルタリングできますが、新しい列にメッセージを追加することはできません。スカラーを使用して他の列の長さを値として持つ列を追加する

例えば、 私は新しいコラム「ERRORMSG」ラジュは、それはせずに有効なレコードに行き、私の本当の記録である

RECORDLENGTH = 4

InputDataFrame-    
+------+ 
| value| 
+------+ 
|Pra | 
|Akshay| 
| Raju| 
|Shakti| 
|xyz | 
+------+ 

OutputDataFrame

+------+------------------------+ 
| value|ErrorMsg    | 
+------+------------------------+ 
|Pra |Less Than total Length 
|Akshay|Greater than total length 
|Shakti|Greater than total length 
|xyx |Less than total length 
+------+------------------------- 

上のメッセージでのみ無効なレコードを見つけたいですメッセージ。

答えて

1

次の結果が得られます。

val df = Seq("Pra", "Akshay", "Raju", "Shakti", "xyz").toDF("value") 
df 
.filter(not(length($"value") === 4)) 
.withColumn("ErrorMsg", when(length($"value") > lit(4), "Greater than total length").otherwise("Less Than total Length")) 
.show(10000, false) 

+------+-------------------------+ 
|value |ErrorMsg     | 
+------+-------------------------+ 
|Pra |Less Than total Length | 
|Akshay|Greater than total length| 
|Shakti|Greater than total length| 
|xyz |Less Than total Length | 
+------+-------------------------+ 
関連する問題