从DataFrame(Java / Spark)中选择指定的列

时间:2016-08-10 19:52:25

标签: java apache-spark apache-spark-sql

我有以下问题:

我有一个架构(1)和一个带有其他架构的DataFrame(2)。 DataFrames架构与另一个架构只有一个区别,它还有一个列。 现在,我想从DataFrame中选择已在schema(1)中指定的列。

示例:

StructType schema; //specified in constructor
DataFrame df_old; //given as parameter
DataFrame df_new = df_old.select(schema.fieldNames());

这不会起作用,因为select()需要两个参数,只给出一个参数。所以,我的想法是:

StructType schema; //specified in constructor
DataFrame df_old; //given as parameter

String[] columns = schema.fieldNames(); //get column names as string array
String   first_col = columns[0]; // get first element of string array
columns = Arrays.copyOfRange(columns, 1, columns.length); //remove first element

DataFrame df_new = df_old.select(first_col,columns);

我认为,这不是最好的方法,因为copyOfRange()会耗费大量时间。特别是,如果有很多列,我需要多次运行。

有人有更好的主意吗?

感谢您的回答。 :)

0 个答案:

没有答案