当我给列号像任何数字'n'时,它应该创建一个具有这么多列数的数据框。当前通常如下所示。
val list = sc.parallelize(List((1, "b", "c", "d"))).toDF()
这将给出4列,但是如果我想将列号作为参数传递并创建一个数据框。
其中包含任何数据或空数据框的列数,请告诉我是否有解决方法。预先感谢
答案 0 :(得分:0)
鉴于列数n:Int
,这将返回一个空数据框:
def createEmptyDf(n:Int) = {
val df = spark.emptyDataFrame
(1 to n).foldLeft(df){ case (resDf, i) => resDf.withColumn(s"$i", lit(null))}
}
看到便笺后,您还可以使用以下groupby / pivot进行移调:
val df = (1 to n).map(i => (i, 0)).toDF()
.groupBy($"_2").pivot($"_1")
.agg(first(lit(0)))
.drop($"_2")