分享

rdd的sample和takesample中的seed

macWang 发表于 2017-7-7 14:54:59 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 5 23000
哪位大神能通俗的解释下这两个方法中的seed该怎么理解。谢谢!

已有(5)人评论

跳转到指定楼层
sstutu 发表于 2017-7-7 15:44:19

下面图示,楼主可参考
1.png
是对RDD集合中进行采样的结果是:获取RDD的子集。
fraction =0.5 保留分片的50%也就是一半
2.png
和Sample的区别是:takeSample返回的是最终的结果集合。

来自
csdn snail_gesture
回复

使用道具 举报

macWang 发表于 2017-7-7 15:47:21
sstutu 发表于 2017-7-7 15:44
下面图示,楼主可参考

是对RDD集合中进行采样的结果是:获取RDD的子集。

你好,我想请问seed为什么是9,为什么不能使1,2,3,该怎么理解?
回复

使用道具 举报

sstutu 发表于 2017-7-7 15:53:49
macWang 发表于 2017-7-7 15:47
你好,我想请问seed为什么是9,为什么不能使1,2,3,该怎么理解?

seed是种子。
看下面例子
rand()函数可以生成随机数,其实是在种子的基础上做某种变换并返回生成的随机数。在默认情况下,种子是1。写一个小程序测试一下。
[mw_shl_code=c,true]main()  
{  
int i,j;  
for(i=0;i<10;i++)  
{  
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));  
cout<<j<<endl;  
}  
}   
   执行:9 4 8 8 10 2 4 8 3 6  [/mw_shl_code]

[mw_shl_code=c,true]main()  
{  
int i,j;  
for(i=0;i<10;i++)  
{  
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));  
cout<<j<<endl;  
}  
}   
   执行:9 4 8 8 10 2 4 8 3 6   [/mw_shl_code]
每次执行结果都是 9 4 8 8 10 2 4 8 3 6。在没有修改种子的情况下,程序每次运行都会产生相同的一组随机数。

从上面可以看出,种子其实是自己选择的一个数


回复

使用道具 举报

pig2 发表于 2017-10-18 19:31:20
本帖最后由 pig2 于 2017-10-18 19:42 编辑

takeSample里面的总的数量 一定要确定,不能随便填写。
如下面有十条记录,随机抽出2和4条来,可以看到如下
[mw_shl_code=bash,true]192.168.169.50 - - [17/Feb/2012:10:09:13 +0800] "GET /favicon.ico HTTP/1.1" 404 288 "-" "360se"
192.168.169.50 - - [17/Feb/2012:10:36:26 +0800] "GET / HTTP/1.1" 403 5043 "-" "Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0"
192.168.169.50 - - [17/Feb/2012:10:36:26 +0800] "GET /icons/powered_by_rh.png HTTP/1.1" 200 1213 "http://192.168.55.230/" "Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0"
192.168.169.50 - - [17/Feb/2012:10:09:10 +0800] "GET /icons/powered_by_rh.png HTTP/1.1" 200 1213 "http://192.168.55.230/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; 360SE)"
192.168.55.230 - - [24/Feb/2012:09:48:58 +0800] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6-3.el5.centos Firefox/3.6.24"
192.168.169.50 - - [24/Feb/2012:09:45:03 +0800] "GET /server-status HTTP/1.1" 404 290 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; 360SE)"
192.168.55.230 - - [24/Feb/2012:09:49:02 +0800] "GET / HTTP/1.1" 403 5043 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6-3.el5.centos Firefox/3.6.24"
192.168.55.230 - - [24/Feb/2012:09:49:02 +0800] "GET /icons/apache_pb.gif HTTP/1.1" 200 2326 "http://192.168.55.230/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6-3.el5.centos Firefox/3.6.24"
192.168.55.230 - - [24/Feb/2012:09:49:02 +0800] "GET /icons/powered_by_rh.png HTTP/1.1" 200 1213 "http://192.168.55.230/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6-3.el5.centos Firefox/3.6.24"
192.168.55.230 - - [24/Feb/2012:09:49:20 +0800] "GET /server-status HTTP/1.1" 404 290 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6-3.el5.centos Firefox/3.6.24"[/mw_shl_code]
[mw_shl_code=scala,true]uriCounts.takeSample(false, 2, 10).foreach(println)[/mw_shl_code]
会输出两条记录
[mw_shl_code=bash,true](/icons/apache_pb.gif,1)
(/,2)
[/mw_shl_code]

[mw_shl_code=scala,true]uriCounts.takeSample(false, 4, 10).foreach(println)[/mw_shl_code]
会输出四条记录
[mw_shl_code=bash,true](/icons/apache_pb.gif,1)
(/,2)
(/server-status,2)
(/favicon.ico,2)

[/mw_shl_code]


回复

使用道具 举报

pig2 发表于 2017-10-18 19:47:17
对于sample,输出的个数,跟第二参数和第三个参数成正比,这两个数越大,输出的结果就会越多。目前还没有确定确切公式
如下
[mw_shl_code=scala,true] uriCounts.sample(false, 0.8, 10).collect().foreach(println)[/mw_shl_code]
[mw_shl_code=bash,true](/icons/powered_by_rh.png,3)
(/,2)
(/server-status,2)
(/icons/apache_pb.gif,1)
[/mw_shl_code]

[mw_shl_code=scala,true]uriCounts.sample(false, 0.8, 100).collect().foreach(println)
[/mw_shl_code]
[mw_shl_code=bash,true](/favicon.ico,2)
(/server-status,2)
(/icons/apache_pb.gif,1)
[/mw_shl_code]

[mw_shl_code=scala,true] uriCounts.sample(false, 0.2, 100).collect().foreach(println)
[/mw_shl_code]
[mw_shl_code=bash,true](/,2)[/mw_shl_code]

[mw_shl_code=bash,true]uriCounts.sample(false, 0.4, 100).collect().foreach(println)
[/mw_shl_code]
[mw_shl_code=bash,true](/icons/powered_by_rh.png,3)
(/,2)
(/icons/apache_pb.gif,1)
[/mw_shl_code]




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条