对于千万行级别的数据,处理起来非常麻烦,例如有一个文件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. Source Tree for MAC1.6

    Atlassian ID has become the new Atlassian Account. Read more about it here. After some great communi ...

  2. 调研eclipse安卓平台的开发环境

    首先,我想抒发一下自己的感想.真的没想到这第一次的作业会这样的一波三折,本来以为自己已经弄好了eclipse,也弄过Java,安卓的环境配置应该不在话下,所以一拖再拖,从17号,也就是昨天开始,才着手 ...

  3. Missing message for key "err1" in bundle "(default bundle)" for locale zh_CN

    这个问题是: 你的使用了ApplicationResources_zh_CN.properties文件没有找到. 1.是struts-config.xml中的<message-resources ...

  4. jQuery插件开发模式

    jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程&g ...

  5. SpringMVC中Controller和RestController

    项目中的@Controller下有的是返回String类型的(比如getAllBook),有的是void的,当然,String类型是转发的页面,在void中用的是pringwrite,我今天想做一件事 ...

  6. java判断list为空

    isEmpty()判断有没有元素而size()返回有几个元素 list.isEmpty()和list.size()==0 没有区别 list!=null跟!list.isEmpty()有什么区别? 这 ...

  7. groovy-语句

    groovy语句类似于java语句,但是在groovy中的分号”;”是可选的.比如: 1 def x = [1, 2, 3] 2 println x 3 def y = 5; def x = y +  ...

  8. POJ1037A decorative fence(动态规划+排序计数+好题)

    http://poj.org/problem?id=1037 题意:输入木棒的个数n,其中每个木棒长度等于对应的编号,把木棒按照波浪形排序,然后输出第c个; 分析:总数为i跟木棒中第k短的木棒 就等于 ...

  9. Bootstrap教程:[4]栅格系统详解

    http://jingyan.baidu.com/article/6f2f55a1852aa1b5b83e6c5a.html 们都知道bootstrap3.0使用了四种栅格选项来形成栅格系统,这四种选 ...

  10. centos 配置固定ip

    centos下网络配置方法(网关.dns.ip地址配置) 来源:互联网 作者:佚名 时间:07-13 00:32:07 [大 中 小] 本文介绍了centos网络配置的方法,centos网络配置主要包 ...