![](/img/trans.png)
[英]Select columns from a dataframe into another dataframe based on column datatype in Apache Spark Scala
[英]Scala Apache Spark and dynamic column list inside of DataFrame select method
我有以下Scala Spark代碼以解析固定寬度的txt文件:
val schemaDf = df.select(
df("value").substr(0, 6).cast("integer").alias("id"),
df("value").substr(7, 6).alias("date"),
df("value").substr(13, 29).alias("string")
)
我想提取以下代碼:
df("value").substr(0, 6).cast("integer").alias("id"),
df("value").substr(7, 6).alias("date"),
df("value").substr(13, 29).alias("string")
為了能夠在某些外部配置中定義列解析而進入動態循環,如下所示(其中x
將保存每個列解析的配置,但現在這是用於演示目的的簡單數字):
val x = List(1, 2, 3)
val df1 = df.select(
x.foreach {
df("value").substr(0, 6).cast("integer").alias("id")
}
)
但是現在,以下行df("value").substr(0, 6).cast("integer").alias("id")
不會出現以下錯誤:
type mismatch; found : org.apache.spark.sql.Column required: Int ⇒ ?
我在做什么錯以及如何正確返回df.select
方法內的動態列列表?
select
不會將語句作為輸入,但是您可以保存要創建的Columns
,然后將表達式擴展為select
輸入:
val x = List(1, 2, 3)
val cols: List[Column] = x.map { i =>
newRecordsDF("value").substr(0, 6).cast("integer").alias("id")
}
val df1 = df.select(cols: _*)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.