[英]Spark Scala Dynamic column selection from DataFrame
我有一個具有不同類型的列的DataFrame。 在那些列中,我需要從該DataFrame中檢索特定的列。 硬編碼的DataFrame select語句將如下所示:
val logRegrDF = myDF.select(myDF("LEBEL_COLUMN").as("label"),
col("FEATURE_COL1"), col("FEATURE_COL2"), col("FEATURE_COL3"), col("FEATURE_COL4"))
LEBEL_COLUMN和FEATURE_COL將是動態的。 我對這些FEATURE列使用Array或Seq:
val FEATURE_COL_ARR = Array("FEATURE_COL1","FEATURE_COL2","FEATURE_COL3","FEATURE_COL4")
我需要將此列集合的數組與第二部分的SELECT語句一起使用。 在選擇中,第一列將是一列(LABEL_COLUMN),其余列將是動態列表。
您能幫我使select語句在SCALA中工作嗎?
注意:下面給出的示例代碼正在工作,但是我需要在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_COL_ARR
result.select("LEBEL_COLUMN", allColumnsArr: _*)
.withColumnRenamed("LEBEL_COLUMN", "label")
希望這可以幫助!
非常感謝@Shankar。
盡管您的建議沒有用,但是我從您的建議中得到了一個主意,並以此方式解決了問題
val allColumnsArr = "LEBEL_COLUMN" +: FEATURE_COL_ARR
val colNames = allColumnsArr.map(name => col(name))
myDF.select(colNames:_*).withColumnRenamed("LEBEL_COLUMN", "label")
同樣,這種方式無需創建DataFrame列:
result.select(LEBEL_COLUMN, FEATURE_COL_ARR: _*) .withColumnRenamed(LEBEL_COLUMN, "label")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.