【发布时间】:2016-02-22 22:18:52
【问题描述】:
我有 66 列要处理的 DataFrame(几乎每个列的值都需要以某种方式更改)所以我正在运行以下语句
val result = data.map(row=> (
modify(row.getString(row.fieldIndex("XX"))),
(...)
)
)
直到第 66 列。 由于此版本中的 scala 限制为 22 对的最大元组,因此我不能那样执行。 问题是,有什么解决方法吗? 在所有行操作之后,我将其转换为具有特定列名的 df
result.toDf("c1",...,"c66")
result.storeAsTempTable("someFancyResult")
“修改”功能只是说明我的观点的一个例子
【问题讨论】:
-
切换到 scala 2.11 ?
-
我希望事情可以这么简单,但事实并非如此
-
@Archeg。嗯有趣。从 2.11.0 开始,案例类的限制肯定被取消了
-
@Odomontois 有趣的讨论:news.ycombinator.com/item?id=7621622 似乎只删除了案例类限制。我不认为你可以在不生成代码的情况下删除元组限制,而且他们还没有元组限制,所以很难介绍。案例分类很容易 - 因为它们无论如何都会生成。仍然没有为 arity > 22 的案例类生成
unapply -
@Silverrose 我认为解决问题的一种方法是尝试使用
shapeless和spark,但我不知道这可能有多复杂。这似乎是有人尝试:github.com/tresata/spark-columnar
标签: scala apache-spark tuples dataframe limit