C********e 发帖数: 492 | 1 training testing 比例不论怎么分,每个stage的input data都是一样多,速度都差不
多(当然计算结果是没错的)。。。只有当我真的把输入数据分好了然后只读入
training data,速度才会快起来。。
这个太bug了吧。。。。 |
x***4 发帖数: 1815 | |
C********e 发帖数: 492 | 3 code肯定没问题,就是原样的example的code
http://spark.apache.org/docs/latest/mllib-optimization.html
我先load了data,然后random split:
val splits = data.randomSplit(Array(0.6, 0.4), seed = 11L)
val training = splits(0).map(x => (x.label, MLUtils.appendBias(x.features)))
.cache()
不论我用0.6, 0.4比例,还是别的比如0.9, 0.1,任务控制页面看到的input size都是
一样的;
如果我事先把data按照某个比例分好training和testing,分别load进来,不用那个
randomsplit来分,那么能看到input size会相应变化
【在 x***4 的大作中提到】 : 什么意思?发code看看?
|
x***4 发帖数: 1815 | 4 randomSplit 是lazy的,会马上返回。真正的sample的操作会在你call rdd action的
时候才会执行。
))
【在 C********e 的大作中提到】 : code肯定没问题,就是原样的example的code : http://spark.apache.org/docs/latest/mllib-optimization.html : 我先load了data,然后random split: : val splits = data.randomSplit(Array(0.6, 0.4), seed = 11L) : val training = splits(0).map(x => (x.label, MLUtils.appendBias(x.features))) : .cache() : 不论我用0.6, 0.4比例,还是别的比如0.9, 0.1,任务控制页面看到的input size都是 : 一样的; : 如果我事先把data按照某个比例分好training和testing,分别load进来,不用那个 : randomsplit来分,那么能看到input size会相应变化
|
C********e 发帖数: 492 | 5 spark能不能设定让这个立刻执行?
【在 x***4 的大作中提到】 : randomSplit 是lazy的,会马上返回。真正的sample的操作会在你call rdd action的 : 时候才会执行。 : : ))
|
l******u 发帖数: 1 | 6 好像应该不行把,这是由scala语法决定的,lazy的变量只有在需要它的时候才会被调
用执行
【在 C********e 的大作中提到】 : spark能不能设定让这个立刻执行?
|
x***4 发帖数: 1815 | 7 就是故意设计成这样的。
【在 C********e 的大作中提到】 : spark能不能设定让这个立刻执行?
|
C********e 发帖数: 492 | 8 那在这种情况下,这种设计岂不是让速度慢了不少。。。
【在 x***4 的大作中提到】 : 就是故意设计成这样的。
|
n*******0 发帖数: 2002 | 9 听说可以避免不必要的计算,应该是会让速度加快的233.
【在 C********e 的大作中提到】 : 那在这种情况下,这种设计岂不是让速度慢了不少。。。
|
d****n 发帖数: 12461 | 10 只有交互环境才会觉得慢吧。lazy的好处是把执行和优化分来了,当然有人也可能觉得
后台优化是个缺点。
【在 C********e 的大作中提到】 : 那在这种情况下,这种设计岂不是让速度慢了不少。。。
|
S***s 发帖数: 104 | 11 You used seed for randomSplit, so it's no longer random and it's testable
))
【在 C********e 的大作中提到】 : code肯定没问题,就是原样的example的code : http://spark.apache.org/docs/latest/mllib-optimization.html : 我先load了data,然后random split: : val splits = data.randomSplit(Array(0.6, 0.4), seed = 11L) : val training = splits(0).map(x => (x.label, MLUtils.appendBias(x.features))) : .cache() : 不论我用0.6, 0.4比例,还是别的比如0.9, 0.1,任务控制页面看到的input size都是 : 一样的; : 如果我事先把data按照某个比例分好training和testing,分别load进来,不用那个 : randomsplit来分,那么能看到input size会相应变化
|
C********e 发帖数: 492 | 12 什么意思呢?能否具体说说?
【在 S***s 的大作中提到】 : You used seed for randomSplit, so it's no longer random and it's testable : : ))
|