2017-12-29 17 views
1

を使用して適切なデータ形式で出力リレーを印刷、私は以下のコードスカラ:私は適切な形式でデータを表示したいスカラ

val maplist=List(Map("id" -> "1", "Name" -> "divya"), 
    Map("id" -> "2", "Name" -> "gaya") 
) 

val header=maplist.flatMap(_.keys).distinct 
val data=maplist.map(_.values) 
println(header.mkString(" ")) 
data.foreach(x => println(x.mkString(" "))) 

この

id Name 
1 divya 
2 gaya 

として示すが、Iさを有します以下のように表示したいと思い、私はあなたがセパレータをしたい場合は、を使用する必要があります

+----+-----+ 
|Id |Name | 
+----+-----+ 
|1 |Divya| 
|2 |gaya | 
+----+-----+ 

答えて

0

df.show()関数を使用する必要がありますより多くのパラメータを持つ方法、あなたはAPI

mkString(スタート:文字列、9月:文字列、最後:String)を:で確認することができます文字列内の

を表示し、このトラバース可能か、イテレータのすべての要素を 開始、終了、および区切り文字列を使用します。

val separatorLine = "+----+-----+" 
    val separator = "|" 
    val maplist=List(Map("id" -> "1", "Name" -> "divya"), 
    Map("id" -> "2", "Name" -> "gaya") 
) 

    val header=maplist.flatMap(_.keys).distinct 
    val data=maplist.map(_.values) 
    println(separatorLine) 
    println(header.mkString("|", " |", "|")) 
    println(separatorLine) 
    data.foreach(x => println(x.mkString("|", " |", "|"))) 
    println(separatorLine) 

結果:

+----+-----+ 
|id |Name| 
+----+-----+ 
|1 |divya| 
|2 |gaya| 
+----+-----+ 

更新:あなたは(例えば5用)すべての文字列中の同じ長さを持っているしたい場合は、必要なときにヨーヨーは空白を追加しAUXILIAR方法を行うことができます。

@tailrec 
    private def appendElem(original : String, desiredLength: Int, c: Char): String = { 
    if (original.length < desiredLength) 
     appendElem(original + c, desiredLength, c) 
    else { 
     original 
    } 
    } 
    val separator = "|" 
    val maplist=List(Map("id" -> "1", "Name" -> "divya"), 
    Map("id" -> "2", "Name" -> "gaya") 
) 

    val separatorLine = List.fill(maplist.size)("+").map(appendElem(_, 6,'-')).mkString+ "+" 
    val header=maplist.flatMap(_.keys.map(key => appendElem(key, 5, ' '))).distinct 
    val data=maplist.map(_.values) 
    println(separatorLine) 
    println(header.mkString("|", "|", "|")) 
    println(separatorLine) 
    data.map(x => x.map(y => appendElem(y, 5, ' '))).foreach(x => println(x.mkString("|", "|", "|"))) 
    println(separatorLine) 

結果は次のようになります。

+-----+-----+ 
|id |Name | 
+-----+-----+ 
|1 |divya| 
|2 |gaya | 
+-----+-----+ 
関連する問題