关于大数据量中抓取数据的问题,

问题描述

在项目中遇到一个问题,需求是这样的:数据库中一张表,有几十万条用户记录,要求每隔一段时间(不能超过一个小时)就从这些数据中抓取一部分出来(大约1000条),要确保用户记录能均匀的被抓取到。我现在的做法是,启用一个定时程序,每隔10分钟就从数据库里面随机抓取500条记录。但是好像不能做到均匀。另外还要考虑下性能问题,数据库为mysql有什么好的方法能确保均匀?问题补充bureaucrat 写道

解决方案

如果是单纯的想要随机把所有的抽取完得话,用自带的随机函数能够保证随机,但是在一个范围内是不一定能够全部的数据都获取的,个人认为可以设计一个数学算法,先将数据排序后进行随机抽取(但是在给定的范围内全部都要抽取到).
解决方案二:

解决方案三:
建个备份表,抓过后就删掉。再抓的自然是没被抓过的。然后,所有的记录都抓完后,再重建表。
解决方案四:
哈,又想到一种,比如100数据,放在集合zero中每次取10个,每次取到后权+1,权为1的放在一个集合假设名为one中,权为2的放集合two中,类推。。。取一次过后把one中取十个放回zero中,如不足10个从two中取补足,这样不知道可以保证均匀不?
解决方案五:
可以这样么?比如你十万数据,你的均匀是一周算一次!那么可以计算一周你可以取所有数据几遍,比如说10遍吧,那么可以给定一个正态分布计算,比如计算出来6-12之间为均匀,你可以取到超过12次的以后不再取了!当然还得限制一下下限,
解决方案六:
开源框架quartz,进行定时任务的配置,你只需要来设置具体的业务类就ok!
解决方案七:
10万, 1000条/次 100000 / 1000 = 100次第一次。。where id % 100 = 0第二次。。where id % 100 = 1。。。第100次。。where id % 100 = 99---------如果不能每次循环的时候取相同数据,可以修改下,把id % 100做一些调整id % n即在每次重新循环的时候调整n(n是个随机数,限制在一个范围内,避免每次抓过多数据或太少数据引起太多次select),n<100的时候随机取其中1000条,n大于100时,再select一次补足,注意避免重复
解决方案八:
这个随机是怎么随的呢,楼主应该明白随过的备份就行了吧
解决方案九:
这样嘛,把几十万数据分1000组,每次从每个组里顺次取1条
解决方案十:
关键在于均匀怎么定义了,建立一个优先级规则,比如同一记录被抓取的次数越高,优先级越低,这样就均匀了....
解决方案十一:
在这里,不论你的“随机抓取500条记录”的设计方法是否可行!至少一点,你的测试该方法不行!随便支个招几十万的数据,不算大,如果怕影响真实环境,完全可以在你的开发机子上把数据给架起来10分钟取一条!NO,太慢了,你就下班回家的时候,把你的测试程序给打开一次才500条,我算你机器非常慢,1秒能取一次数据吧?好,1个小时能取3600次,10个小时。。。。如果你还嫌慢,借你同事的机器吧。。。。。。
解决方案十二:
是不是可以按照一定的规律来抓取。比方说今天这个时间点 抓取 用户ID在(0,1000)的区间,自己安排好数量级,这样抓取基本可以抓的全,抓的均匀就看数量级的划分了。
解决方案十三:
怎么随机的?select * from (select * from test_tab order by dbms_random.random) where rownum < 1000抓到好几次也正常,3天太短,30天就均匀了
解决方案十四:
你是想说如果抓到了,就不能再抓?
解决方案十五:
问题是:你怎么判断的不均匀?

时间: 2024-11-03 21:47:46

关于大数据量中抓取数据的问题,的相关文章

《Clojure数据分析秘笈》——1.8节从网页表中抓取数据

1.8 从网页表中抓取数据互联网上数据无处不在.遗憾的是,许多互联网上的数据不易获得.这些数据深埋于表.文章或者深层嵌套的标签中.网络抓取是一件让人讨厌的体力活,但是它通常又是唯一能将这些数据取出用于分析的手段.本方法描述如何加载网页并挖掘其内容以便取出数据.使用Enlive库(https://github.com/cgrand/enlive/wiki)可以完成这项工作.这个库使用基于CSS选择器的领域专用语言(Domain-Sepecific Language,DSL)在网页中定位元素.这个库

jsoup ip封锁-jsoup 抓取数据如何解决 IP封锁

问题描述 jsoup 抓取数据如何解决 IP封锁 jsoup 抓取 数据 如何 解决 爬取 网站 的 IP封锁 解决方案 使用Jsoup 异步抓取页面的数据使用jsoup从网站抓取数据使用Jsoup抓取数据 解决方案二: 这你得看对方网站的反爬虫机制了,不同的网站反爬虫机制不同

大数据量中的模糊查询优化方案

----------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52589761作者:朱培      ID:sdksdk0      ------------------------------------------------

技术-最近在抓取数据的时候遇到个问题,请问大神如何抓取内容我用的是C#

问题描述 最近在抓取数据的时候遇到个问题,请问大神如何抓取内容我用的是C# <html><head><link title="将较长的行自动换行" href="resource://gre-resources/plaintext.css" type="text/css" rel="alternate stylesheet"></head><body><pre&g

使用Scrapy抓取数据

Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. 官方主页: http://www.scrapy.org/ 中文文档:Scrapy 0.22 文档 GitHub项目主页:https://github.com/scrapy/scrapy Scrapy 使用了 Twisted 异步网络库来处理网络通讯.整体架构大致如下(注:图片来自互联网): Scrapy主要包括了以下

ajax-php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助!

问题描述 php采集高手进:利用curl模拟登录抓取数据遇到json调用问题不成功,求助! 我在抓取一个页面的信息(假设a.php),这个页面只是一些基本的html框架,其他关键信息是通过ajax请求(b.php)回来的,返回的是json,然后在通过页面js将json解析,绘制到页面上.问题的关键是ajax请求的信息里有个手机号码需要登录后才显示完整,原网站利用ajax请求b.php获得json数据,如果直接访问b.php也是可以直接得到:{"name":"zhangsan&

使用Apache Flume抓取数据(1)

使用Apache Flume抓取数据,怎么来抓取呢?不过,在了解这个问题之前,我们必须明确ApacheFlume是什么? 一.什么是Apache Flume Apache Flume是用于数据采集的高性能系统 ,名字来源于原始的近乎实时的日志数据采集工具,现在广泛用于任何流事件数据的采集,支持从很多数据源聚合数据到HDFS. 最初由Cloudera开发 ,在2011年贡献给了Apache基金会 ,在2012年变成了Apache的顶级项目,Flume OG升级换代成了Flume NG. Flume

这种网页数据,怎么抓取

问题描述 有些网站,打开网页源代码,源代码里面没有自己想要的数据,而明明这些数据在网页上又是显示了的.那请问,这些数据该怎么抓取呢?在源代码里有的数据,我是能够抓取的. 解决方案 解决方案二:应该是用js从服务器取数据并显示.据说js执行完毕没有事件,因此只能设置个定时器,设置足够的时间,到时候用用Document取得DOM数据.解决方案三:那是通过js到后方取数据,然后动态显示上去的,你需要模拟它的提交参数,来获取内容,googleC#模拟提交解决方案四:说明这些数据不是这个网页返回的,而是这

利用Jsoup解析网页及抓取数据的简单应用

最近一直在公司利用爬虫技术,去抓取一些网页查询网站备案信息,刚开始使用HttpClient 和 jericho (这两个也挺好用你可以去测试一下).但是后来发现了Jsoup,他和Jquery很相似,在搜节点上使用的技术几乎相似.所以凡是使用过Jquery的都可以去尝试使用Jsoup去解析抓取数据.下面举个例子我们去抓去所有公交车的信息(哥是郑州的哈). 在解析之前你需要jar包,你可以去http://jsoup.org/直接下载.如果使用maven更方便 只需引进依赖 例如 <dependenc