我有一個具有不同類型列的DataFrame。在那些列中,我需要從該DataFrame中檢索特定的列。 硬編碼的數據幀的select語句將是這樣的:Spark Scala DataFrame中的動態列選擇
val logRegrDF = myDF.select(myDF("LEBEL_COLUMN").as("label"),
col("FEATURE_COL1"), col("FEATURE_COL2"), col("FEATURE_COL3"), col("FEATURE_COL4"))
凡LEBEL_COLUMN和FEATURE_COLs將是動態的。 我有數組或序列爲那些特色欄目是這樣的:
val FEATURE_COL_ARR = Array("FEATURE_COL1","FEATURE_COL2","FEATURE_COL3","FEATURE_COL4")
我需要在第二部分使用列集合的這陣與SELECT語句。 在select中,第一列將是一個(LABEL_COLUMN),其餘的將是動態列表。
你能幫我做一下SCALA中的select語句嗎?
注: 樣品給波紋管的工作,但我需要添加列陣列中的SELECT
val colNames = FEATURE_COL_ARR.map(name => col(name))
val logRegrDF = myDF.select(colNames:_*) // it is not the requirement
我想到的第二部分代碼的第二部分的代碼會是這樣,但它不工作:
val logRegrDF = myDF.select(myDF("LEBEL_COLUMN").as("label"), colNames:_*)
喜@尚卡爾,非常感謝。 雖然你給出的建議是行不通的,但我從你的建議得到了想法,並通過這種方式 VAL allColumnsArr =「LEBEL_COLUMN」 +解決問題:FEATURE_COLUMNS VAL colNames = allColumnsArr.map(名稱=>山口(名稱)) myDF.select(colNames:_ *)。withColumnRenamed(「LEBEL_COLUMN」,「label」) –
更新了答案,請檢查。你不需要列,字符串也被接受爲參數。 –
是的這有效。 \t result.select(「LEBEL_COLUMN」,FEATURE_COL_ARR:_ *).withColumnRenamed(「LEBEL_COLUMN」,「label」) –