我们有个产品,每天差不多500w的业务量,需要对500w做相关的分析,就需要入库~
目前用的是mysql 按月切表定期老化数据,但是导入数据情况比较糟糕~每天导入数据差不多需要20个小时,和MySQL 5000 records/second差距巨大~
尝试过三个方案:
- 定期解析日志,直接入库;
- 定期解析日志,生成sql,再直接sql入库;
- 生成data文件,load到库里
但是效果都不理想~ 没什么大数据处理的经验,大家支招~~~
#4楼 @vincent 哦,sql导入的速度还不错,但是准备sql的过程比较慢,过程是这样的:
1. 准备sql文件
sqlFileName = RAILS_ROOT + "/log/insert.sql." + LOG_POSTFIX_FOR_YESTERDAY
sqlfile = File.open(sqlFileName, "w")
3.提取需要的数据
id, apk_id, ip, client_id, channel_id, uniquely_code ,track = line.split(" : ")[1].split(",")
生成sql串
sqlInsert = "INSERT logs_downloads.....balalaalala
写到sql文件里
sqlfile.puts( sqlInsert )
调mysql直接导入sql
里面还有一些数据的清洗和排重工作~
每天的日志文件差不多500w行,解析生成sql的过程不理想(其中没用数据库操作)~ 难道是我磁盘性能很糟糕~~
补充一下,我是从数据仓库的角度分析你的case的。仅供参考。
http://blog.s135.com/infobright/
#15楼 @iceskysl 建议不要用ActiveRecord,也不要用Mysql的Innodb。数据库用mysql的Myisam,直接调mysqlimport命令,当时我vmware虚拟机(主机为i5/2g ram)下导入csdn >600w条记录只要1分20秒左右。
http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html
#24楼 @ashchan
原因是我在清洗数据的时候用到了ruby的array中include?方法,而这个方法是直接遍历。。如下图
详细的我在blog大致纪录了下:
http://www.iceskysl.com/?p=1106
#4楼 @vincent 哦,sql导入的速度还不错,但是准备sql的过程比较慢,过程是这样的:
1. 准备sql文件
sqlFileName = RAILS_ROOT + "/log/insert.sql." + LOG_POSTFIX_FOR_YESTERDAY
sqlfile = File.open(sqlFileName, "w")
3.提取需要的数据
id, apk_id, ip, client_id, channel_id, uniquely_code ,track = line.split(" : ")[1].split(",")
生成sql串
sqlInsert = "INSERT logs_downloads.....balalaalala
写到sql文件里
sqlfile.puts( sqlInsert )
调mysql直接导入sql
里面还有一些数据的清洗和排重工作~
每天的日志文件差不多500w行,解析生成sql的过程不理想(其中没用数据库操作)~ 难道是我磁盘性能很糟糕~~
补充一下,我是从数据仓库的角度分析你的case的。仅供参考。
http://blog.s135.com/infobright/
#15楼 @iceskysl 建议不要用ActiveRecord,也不要用Mysql的Innodb。数据库用mysql的Myisam,直接调mysqlimport命令,当时我vmware虚拟机(主机为i5/2g ram)下导入csdn >600w条记录只要1分20秒左右。
http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html
#24楼 @ashchan
原因是我在清洗数据的时候用到了ruby的array中include?方法,而这个方法是直接遍历。。如下图
详细的我在blog大致纪录了下:
http://www.iceskysl.com/?p=1106
我们有个产品,每天差不多500w的业务量,需要对500w做相关的分析,就需要入库~
目前用的是mysql 按月切表定期老化数据,但是导入数据情况比较糟糕~每天导入数据差不多需要20个小时,和MySQL 5000 records/second差距巨大~
尝试过三个方案:
但是效果都不理想~ 没什么大数据处理的经验,大家支招~~~
#4楼 @vincent 哦,sql导入的速度还不错,但是准备sql的过程比较慢,过程是这样的:
1. 准备sql文件
sqlFileName = RAILS_ROOT + "/log/insert.sql." + LOG_POSTFIX_FOR_YESTERDAY
sqlfile = File.open(sqlFileName, "w")
3.提取需要的数据
id, apk_id, ip, client_id, channel_id, uniquely_code ,track = line.split(" : ")[1].split(",")
生成sql串
sqlInsert = "INSERT logs_downloads.....balalaalala
写到sql文件里
sqlfile.puts( sqlInsert )
调mysql直接导入sql
里面还有一些数据的清洗和排重工作~
每天的日志文件差不多500w行,解析生成sql的过程不理想(其中没用数据库操作)~ 难道是我磁盘性能很糟糕~~
补充一下,我是从数据仓库的角度分析你的case的。仅供参考。
http://blog.s135.com/infobright/
#15楼 @iceskysl 建议不要用ActiveRecord,也不要用Mysql的Innodb。数据库用mysql的Myisam,直接调mysqlimport命令,当时我vmware虚拟机(主机为i5/2g ram)下导入csdn >600w条记录只要1分20秒左右。
http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html
#24楼 @ashchan
原因是我在清洗数据的时候用到了ruby的array中include?方法,而这个方法是直接遍历。。如下图
详细的我在blog大致纪录了下:
http://www.iceskysl.com/?p=1106
#4楼 @vincent 哦,sql导入的速度还不错,但是准备sql的过程比较慢,过程是这样的:
1. 准备sql文件
sqlFileName = RAILS_ROOT + "/log/insert.sql." + LOG_POSTFIX_FOR_YESTERDAY
sqlfile = File.open(sqlFileName, "w")
3.提取需要的数据
id, apk_id, ip, client_id, channel_id, uniquely_code ,track = line.split(" : ")[1].split(",")
生成sql串
sqlInsert = "INSERT logs_downloads.....balalaalala
写到sql文件里
sqlfile.puts( sqlInsert )
调mysql直接导入sql
里面还有一些数据的清洗和排重工作~
每天的日志文件差不多500w行,解析生成sql的过程不理想(其中没用数据库操作)~ 难道是我磁盘性能很糟糕~~
补充一下,我是从数据仓库的角度分析你的case的。仅供参考。
http://blog.s135.com/infobright/
#15楼 @iceskysl 建议不要用ActiveRecord,也不要用Mysql的Innodb。数据库用mysql的Myisam,直接调mysqlimport命令,当时我vmware虚拟机(主机为i5/2g ram)下导入csdn >600w条记录只要1分20秒左右。
http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html
#24楼 @ashchan
原因是我在清洗数据的时候用到了ruby的array中include?方法,而这个方法是直接遍历。。如下图
详细的我在blog大致纪录了下:
http://www.iceskysl.com/?p=1106
我们有个产品,每天差不多500w的业务量,需要对500w做相关的分析,就需要入库~
目前用的是mysql 按月切表定期老化数据,但是导入数据情况比较糟糕~每天导入数据差不多需要20个小时,和MySQL 5000 records/second差距巨大~
尝试过三个方案:
但是效果都不理想~ 没什么大数据处理的经验,大家支招~~~
#4楼 @vincent 哦,sql导入的速度还不错,但是准备sql的过程比较慢,过程是这样的:
1. 准备sql文件
sqlFileName = RAILS_ROOT + "/log/insert.sql." + LOG_POSTFIX_FOR_YESTERDAY
sqlfile = File.open(sqlFileName, "w")
3.提取需要的数据
id, apk_id, ip, client_id, channel_id, uniquely_code ,track = line.split(" : ")[1].split(",")
生成sql串
sqlInsert = "INSERT logs_downloads.....balalaalala
写到sql文件里
sqlfile.puts( sqlInsert )
调mysql直接导入sql
里面还有一些数据的清洗和排重工作~
每天的日志文件差不多500w行,解析生成sql的过程不理想(其中没用数据库操作)~ 难道是我磁盘性能很糟糕~~
补充一下,我是从数据仓库的角度分析你的case的。仅供参考。
http://blog.s135.com/infobright/
#15楼 @iceskysl 建议不要用ActiveRecord,也不要用Mysql的Innodb。数据库用mysql的Myisam,直接调mysqlimport命令,当时我vmware虚拟机(主机为i5/2g ram)下导入csdn >600w条记录只要1分20秒左右。
http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html
#24楼 @ashchan
原因是我在清洗数据的时候用到了ruby的array中include?方法,而这个方法是直接遍历。。如下图
详细的我在blog大致纪录了下:
http://www.iceskysl.com/?p=1106
#4楼 @vincent 哦,sql导入的速度还不错,但是准备sql的过程比较慢,过程是这样的:
1. 准备sql文件
sqlFileName = RAILS_ROOT + "/log/insert.sql." + LOG_POSTFIX_FOR_YESTERDAY
sqlfile = File.open(sqlFileName, "w")
3.提取需要的数据
id, apk_id, ip, client_id, channel_id, uniquely_code ,track = line.split(" : ")[1].split(",")
生成sql串
sqlInsert = "INSERT logs_downloads.....balalaalala
写到sql文件里
sqlfile.puts( sqlInsert )
调mysql直接导入sql
里面还有一些数据的清洗和排重工作~
每天的日志文件差不多500w行,解析生成sql的过程不理想(其中没用数据库操作)~ 难道是我磁盘性能很糟糕~~
补充一下,我是从数据仓库的角度分析你的case的。仅供参考。
http://blog.s135.com/infobright/
#15楼 @iceskysl 建议不要用ActiveRecord,也不要用Mysql的Innodb。数据库用mysql的Myisam,直接调mysqlimport命令,当时我vmware虚拟机(主机为i5/2g ram)下导入csdn >600w条记录只要1分20秒左右。
http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html
#24楼 @ashchan
原因是我在清洗数据的时候用到了ruby的array中include?方法,而这个方法是直接遍历。。如下图
详细的我在blog大致纪录了下:
http://www.iceskysl.com/?p=1106