![](/img/trans.png)
[英]Scala Spark-> Select first 15 columns from a DataFrame
[英]select array of columns and expr from dataframe spark scala
我們可以從數據框中選擇列列表和expr
嗎?
我需要從數據框中選擇列列表和 expr。
下面是列列表
val dynamicColumnSelection = Array("a", "b", "c", "d", "e", "f")
// These columns will change dynamically.
而且我還有一個expr
可以從同一個數據幀和上述列中進行選擇。
expr("stack(3, 'g', g, 'h', h, 'i', i) as (Key,Value)")
我可以選擇列數組或單個列以及expr
。
df.select(col("a"), col("b"), col("c"), col("d"), col("e"),
expr("stack(3, 'g', g, 'h', h, 'i', i) as (Key,Value)") )
但是這里dynamicColumnSelection
列是動態准備的。
我們可以從數據框中選擇列列表和expr
嗎?
請指導,我怎樣才能做到這一點?
數據框很大,所以不尋找連接。
您可以做的是將列名數組轉換為列數組,向其中添加表達式並使用:_*
來“splat”生成的數組。
// simply creating a one line dataframe to check that it's working
val df = Seq((1, 2, 3, 4, 5 ,6, 7, 8, 9))
.toDF("a", "b", "c", "d", "e", "f", "g", "h", "i")
val e = expr("stack(3, 'g', g, 'h', h, 'i', i) as (Key,Value)")
val dynamicColumnSelection = Array("a", "b", "c", "d", "e", "f")
val result = df.select(dynamicColumnSelection.map(col) :+ e :_*)
result.show()
哪個產量
+---+---+---+---+---+---+---+-----+
| a| b| c| d| e| f|Key|Value|
+---+---+---+---+---+---+---+-----+
| 1| 2| 3| 4| 5| 6| g| 7|
| 1| 2| 3| 4| 5| 6| h| 8|
| 1| 2| 3| 4| 5| 6| i| 9|
+---+---+---+---+---+---+---+-----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.