我有以下DataFrame:
|-----id-------|----value------|-----desc------|
| 1 | v1 | d1 |
| 1 | v2 | d2 |
| 2 | v21 | d21 |
| 2 | v22 | d22 |
|--------------|---------------|---------------|
Run Code Online (Sandbox Code Playgroud)
我想把它变成:
|-----id-------|----value------|-----desc------|
| 1 | v1;v2 | d1;d2 |
| 2 | v21;v22 | d21;d22 |
|--------------|---------------|---------------|
Run Code Online (Sandbox Code Playgroud)
我认为rdd.reduce是关键,但我不知道如何使它适应这种情况.
我有66个要处理的DataFrame(几乎每个列值都需要更改)所以我正在运行以下语句
val result = data.map(row=> (
modify(row.getString(row.fieldIndex("XX"))),
(...)
)
)
Run Code Online (Sandbox Code Playgroud)
直到第66列.由于此版本中的scala限制为22对的最大元组,因此无法执行此操作.问题是,有什么解决方法吗?在所有行操作之后,我将其转换为具有特定列名称的df
result.toDf("c1",...,"c66")
result.storeAsTempTable("someFancyResult")
Run Code Online (Sandbox Code Playgroud)
"修改"功能只是一个展示我观点的例子