如何在scala spark中以编程方式更改数据框名称

时间:2017-05-22 07:34:22

标签: scala apache-spark

我有一组数据帧。我们的想法是以编程方式创建一个新的数据框数组,其数据框名称附加一个字符串。简而言之,我有一个名为

的数组
var dataFrameArray = Array(df1, df2, df3, df4, df5, df6, df7, df8, df9, df10)

我需要一个名为

的新dataFrame
newDataFrameArray = Array(df1new, df2new, df3new, df4new, df5new, df6new, df7new, df8new, df9new, df10new)

新数组中的每个元素都是具有新名称df(x)+“new”的数据框

这是我对我的代码的尝试,目前无效。

import org.apache.spark.sql.types._
import org.apache.spark.sql.Dataset

var dataFrameArray = Array(df1, df2, df3, df4, df5, df6, df7, df8, df9, df10)
var newDataFrameArray = new Array[Dataset](dataFrameArray.length);
var counter = 0;
for (x <- dataFrameArray) {
  var y: Dataset<Row> = x.select($"timestamp".cast(DoubleType).cast(TimestampType).as("timestamps"),$"is_anomaly",$"value")
  y = y.orderBy($"timestamps")
  y.printSchema()
  newDataFrameArray = newDataFrameArray + y
}

for (eachDf <- newDataFrameArray) {
  eachDf.printSchema
}

2 个答案:

答案 0 :(得分:1)

您无法在Scala或Java中动态更改变量名称。 应该明确声明变量名称。 此外,您的问题与Scala有关,与Spark数据集

无关

答案 1 :(得分:0)

您无法更改dataframe变量的名称。您可以注册新表并在稍后的数据框中分配

,而不是创建新的Dataframe
y.createOrReplaceTempView()