对于千万行级别的数据,处理起来非常麻烦,例如有一个文件a.txt,大小超过2GB,共2000多万行,每行是一个新闻的相关信息,其中有一列为新闻标题,字符串型,新闻标题较长,现需要对新闻标题进行聚类,将类似标题的新闻归为一类,并将其中代表性的标题作为这一组新闻的标题。

例如"海量数据处理经验交流会今天召开-第一部分","海量数据处理经验交流会今天召开-第二部分","海量数据处理经验交流会今天召开-第三部分",将这三个标题归类为"海量数据处理经验交流会今天召开"。

如何实现?

我的思路是:

首先,从2GB的a.txt文件中,提取出新闻标题这一列,然后将其存入到另一个文件b.txt,这样,就得到一个只包含新闻标题这一列的b.txt文件,文件大小仅为500多MB。

第二步,将其导入到MySQL数据库,具体采用load data infile 'D:/test/news.txt' into table news(newsid,newstitle)这一方法导入。

第三步,由于同时处理上千万条数据,很有可能发生内存不足而发生异常,因此分批从MySQL读取一部分数据(例如一百万条),再利用Levenshtein距离,计算新闻标题(字符串类型)之间的相似性,距离小于等于2的归为一类,并将这一类的第一个新闻标题,截取前面的公共部分作为这一类新闻的标题。

需要注意的是,导入大批量数据到MySQL时,可以采用Python的cursor.executemany()方法,也可以采用Java的PreparedStatement.executeBatch()方法,或者采用MySQL数据库自带的load data infile命令(详见:http://blog.csdn.net/north_easter/article/details/8333137),

我在进行第二步的时候,采用了MySQL自带的命令,第一次执行报错:

The MySQL server is running with the --secure-file-priv so it cannot execute this statement

Google之后才知道,不是随便一个地方的文件都能导入到MySQL数据库,出于MySQL的安全机制,secure_file_priv指定的文件夹里面的文件才能作为数据源导入,因此首先需要使用SHOW VARIABLES LIKE "secure_file_priv"命令找出该文件夹,例如C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\

然后需要把作为数据源的txt文件放在该文件夹下,才能导入,如果txt数据源中如果存在中文字符,则可能会报其他的错误。

数据处理经验尚浅,只能想出这种方法,网上查资料,发现对于海量数据处理,大量采用分治法和Hash(例如SimHash)等方法。

参考:

http://qindongliang.iteye.com/blog/2248888

http://blog.csdn.net/v_july_v/article/details/6279498

海量数据导入MySQL的注意事项的更多相关文章

  1. 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat

    很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...

  2. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

  3. mysql安装和mysql图形界面安装以及文本文件导入mysql

    本人大一大二一直使用windows系统,被微软爸爸给惯坏了,一看到cmd命令行就吓尿.现在用ubuntu,每一个操作都是语句,也是得到锻炼(个jb). ubuntu安装mysql和python代码 s ...

  4. (转) PowerDesigner逆向工程导入MYSQL数据库总结

    PowerDesigner逆向工程导入MySQL数据库总结 由于日常数据建模经常使用PowerDesigner,使用逆向工程能更加快速的生成模型提高效率,所以总结使用如下: 1.      安装MYS ...

  5. 数据库是.frm,.myd,myi备份如何导入mysql (转)

    今天找了个案例,琢磨了半天,才分析大概出来,数据库是.frm,.myd,myi备份,不会导入mysql,到网上找了些资料,导入成功. 首先说一下这几种文件是干什么的,*.frm是描述了表的结构,*.M ...

  6. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  7. python2.7 爬虫_爬取小说盗墓笔记章节及URL并导入MySQL数据库_20161201

    1.爬取页面 http://www.quanshu.net/book/9/9055/ 2.用到模块urllib(网页下载),re正则匹配取得title及titleurl,urlparse(拼接完整ur ...

  8. piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql

    piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql 需要不个mssql的sql文件导入mysql.他们的时间戳格式不同..ms用的是自定义的时 ...

  9. 使用MySQL Migration Toolkit快速将Oracle数据导入MySQL[转]

    使用MySQL Migration Toolkit快速将Oracle数据导入MySQL上来先说点废话本人最近在学习一些数据库方面的知识,之前接触过Oracle和MySQL,最近又很流行MongoDB非 ...

随机推荐

  1. 第四课:seajs的模块编译_compile过程

    最近比较闲,我就讲下seajs的模块编译_compile过程. 这里紧接着第三课的例子来讲解.首先是a.js的编译 Module.prototype._compile = function() { 1 ...

  2. angular的编辑器tinymce

    angular的插件的确挺少的, 编辑器更是少, ui-tinymce是angular-ui推荐的一款编辑器(GIT: https://github.com/angular-ui/ui-tinymce ...

  3. angular例子笔记

    学习angular的插件写法和制作; <!DOCTYPE html> <html ng-app="APP"> <head> <meta c ...

  4. Day10

    会议讨论 628:今天是冲刺的最后一天了,好紧张好激动,我们组还有好些个功能没实现呢,感觉崩崩哒!还要实现选择不同的专业导入不同的课表呢. 601:在修改教师帐号信息的页面要有当密码格式.用户名格式等 ...

  5. 第四次个人作业——关于微软必应词典android客户端的案例分析

    [前言] 第一次搞测评这种东西,如果有什么疏漏,请多多谅解.测评内容如题. 第一部分 调研,评测 评测:(设备:Lenovo A806) 软件的bug,功能评测,黑箱测试 bug等级划分方式 5级分类 ...

  6. java web名词解释

    来源于:http://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.html PO(persistant object) 持久对象 在o ...

  7. Java-人民币转成大写

    /** * 人民币转成大写 hangeToBig * * @param value * @return String */ public static String 人民币转成大写(double va ...

  8. Java基础-jdk动态代理与cglib动态代理区别

    JDK动态代理 此时代理对象和目标对象实现了相同的接口,目标对象作为代理对象的一个属性,具体接口实现中,可以在调用目标对象相应方法前后加上其他业务处理逻辑. 代理模式在实际使用时需要指定具体的目标对象 ...

  9. BZOJ-4300 绝世好(蛋疼)题 DP(递推)

    翻zky学长的blog时翻出来的..... 4300: 绝世好题 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 736 Solved: 393 [Sub ...

  10. BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2269 Solved: 1136 [Submit ...