dataframe.selectexpr性能,用于选择大量列

时间:2016-12-08 05:30:35

标签: scala apache-spark spark-dataframe

我在scala中使用spark数据帧。我的数据框大约有400列,1000-1M行。我正在跑步 某些条件的 datagrame.selectExpr操作(1到400列),一旦获取它们,我就会聚合所有这些列的值。

我的selectexpr声明:

val df = df2.selectExpr(getColumn(beginDate, endDate, x._2): _*)

getColumn方法将在我的数据帧的开始和结束之间每天获取列(由于我们有明智的数据,这可能是365列。)

我对表达式的总结是:

  df.map(row => (row(0), row(1), row(2), (3 until row.length).map(row.getLong(_)).sum)).collect()

我发现选择这么多列会降低我的工作效率。无论如何,这样可以更快地获取400列吗?

1 个答案:

答案 0 :(得分:0)

Dataframe比RDD更好的优化。你正在使用它是好的。但是你可以检查Spark UI以及花费很多时间的阶段。如果由于计算或由于数据加载而花费时间。 Reshaping Data。并尝试缓慢扩展以获得更快的输出。检查分区是否也可以帮助您的代码运行它更胖。 Apache Spark Code Faster。使代码更快地依赖于各种因素,并尝试使用这些代码进行优化。