2017-08-30 10 views
1

の列から特定のフィールドを取得する私はこのような構造を持つデータフレームを持っている:私は、データフレーム内のすべての行からすべてのnpaNumberを取得したいスパークDATAFRAME - どのように行

root 
|-- npaDetails: struct (nullable = true) 
| |-- additionalInformation: struct (nullable = true) 
| |-- npaStatus: struct (nullable = true) 
| |-- npaDetails: struct (nullable = true) 
|-- npaHeaderData: struct (nullable = true) 
| |-- npaNumber: string (nullable = true) 
| |-- npaDownloadDate: string (nullable = true)  
| |-- npaDownloadTime: string (nullable = true) 

データフレーム内のすべての行を繰り返し処理して、npaHeaderData列に格納されている値をそれぞれフィールドnpaNumberに抽出しました。だから私は、次の行をコーディング:各反復で印刷された列の

parquetFileDF.foreach { newRow => 

    //To retrieve the second column 
    val column = newRow.get(1) 

    //The following line is not allowed 
    //val npaNumber= column.getAs[String]("npaNumber") 

    println(column) 

} 

内容は次のようになります。

[207400956,27FEB17,09.30.00]

しかしcolumnであります任意のフィールドを抽出できません。私が間違ってやっていることを誰かが教えてもらえますか、これの代わりにどのようなアプローチをとるべきですか

おかげ

+1

で、あなたに新しいデータフレームを与えるたデータフレームにselect()を呼び出すことができますが、複数列のデータフレームから1列でデータフレームを取得したいか、ポイントということはありますか? –

+0

@MehdiBenHamida私のアルゴリズムの最初のステップでは、その値を将来の参照のための参照として使用するので、カラムから1つのフィールドを取得する必要があります。だから私はすべての列を保持する必要があります。しかし、このステップでは、私の2番目の列だけを選択することができます。 –

答えて

1

あなただけnpaNumber、あなたは

parquetFileDF.select($"npaHeaderData.npaNumber".as("npaNumber")) 

を行うことができますあなただけdataframenpaNumberの列を持つべき抽出するために探している場合。

+0

私はそれを試みます。後で他の列も必要になりますが、最初のステップとしてこれが機能します。ありがとう! –

+0

ちょうどコメント、私はあなたが両方とも$ "npaHeaderData.npaNumber"を忘れてしまったと思います。少なくとも私のIDEは文句を言っていた –

+0

はいあなたは正しいです:) –

1

あなただけの指定した列

var newDataFrame = dataFrame.select(dataFrame("npaHeaderData.npaNumber").as("npaNumber")) 
+1

それは私の答えと異なっていますか? –

+0

はどちらも同じですが、両方とも並行して回答している可能性があります –

+0

はい、@RameshMaharjan指摘ありがとう、ありがとうございました。 –

関連する問題