【发布时间】:2019-08-10 03:15:46
【问题描述】:
我需要创建一个包含 n 行的数据框,并且一行的每一列值随机初始化为 0/1。一个示例数据框是:
+----+----+----+
| id | c1 | c2 |
+----+----+----+
| 1 | 0 | 1 |
| 2 | 1 | 1 |
| 3 | 1 | 0 |
+----+----+----+
目前我正在使用以下程序:
- 创建空数据框
- 生成单个序列
- 使用 union() 附加到现有数据帧
代码如下:
for (k <- 0 until n) {
var newRow = k+:Seq.fill(N)(Random.nextInt(2)) // random fill with 0/1 and appending id
X = X.union(newRow.toDF())
}
上述方法会影响性能(运行时间)吗?有没有更好的方法来做到这一点?
【问题讨论】:
-
联合是昂贵的。您可以创建一个列表,然后将列表转换为数据框(对不起,不是 Scala 专家 :()
标签: scala apache-spark for-loop functional-programming apache-spark-sql