导入GoogleClusterData到MySQL
本篇随笔记录如何导入google-cluster-data-2011-1-2的
job_events和task_events到MySQL
1. 下载数据
download_job_events:
import urllib2 url = 'https://commondatastorage.googleapis.com/clusterdata-2011-2/'
f = open('C:\\SHA256SUM')
l = f.readlines()
f.close()
for i in l:
if i.count('job_events')>0:
fileAddr = i.split()[1][1:]
fileName = fileAddr.split('/')[1]
print 'downloading', fileName
data = urllib2.urlopen(url+fileAddr).read()
print 'saving', fileName
fileDown = open('C:\\job_events\\'+fileName, 'wb')
fileDown.write(data)
fileDown.close()
download_task_events:
import urllib2 url = 'https://commondatastorage.googleapis.com/clusterdata-2011-2/'
f = open('C:\\SHA256SUM')
l = f.readlines()
f.close()
for i in l:
if i.count('task_events')>0:
fileAddr = i.split()[1][1:]
fileName = fileAddr.split('/')[1]
print 'downloading', fileName
data = urllib2.urlopen(url+fileAddr).read()
print 'saving', fileName
fileDown = open('C:\\task_events\\'+fileName, 'wb')
fileDown.write(data)
fileDown.close()
注意:这次用的数据是
clusterdata-2011-2
不同于之前重画GoogleCLusterData中的
clusterdata-2011-1
2. 解压缩
由于不能直接导入压缩包里的数据到mysql,故先将它们解压缩
unzip_job_events:
import gzip
import os fileNames = os.listdir('C:\\task_events') for l in fileNames:
print 'now at: '+ l
f = gzip.open('C:\\job_events\\'+l)
fOut = open('C:\\job_events_unzip\\'+l[:-3], 'w')
content = f.read()
fOut.write(content)
f.close()
fOut.close()
#raw_input()
unzip_task_events:
import gzip
import os fileNames = os.listdir('C:\\task_events') for l in fileNames:
print 'now at: '+ l
f = gzip.open('C:\\task_events\\'+l)
fOut = open('C:\\task_events_unzip\\'+l[:-3], 'w')
content = f.read()
fOut.write(content)
f.close()
fOut.close()
3. 建数据库
create_job_events:
create table job_events(
time bigint,
missing_info int,
job_id bigint,
event_type int,
user text,
scheduling_class int,
job_name text,
logical_job_name text)
engine = myisam;
create_task_events:
create table task_events(
time bigint,
missing_info int,
job_id bigint,
task_index bigint,
machine_id bigint,
event_type int,
user text,
scheduling_class int,
priority int,
cpu_request float,
memory_request float,
disk_space_request float,
difference_machine_restriction boolean
)engine = myisam;
注意:由于数据量非常大,这里一定要选择myisam作为engine。
4. 导入数据
由于数据中有部分为空的值,需要先设定mysql使其能够导入空值。
具体方法为:
在mysql的控制台输入
SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
之后就可以开始导入数据了。
注意!!以下代码在导入类似2.3e-10的数据会产生严重问题,具体为导入的数据在MySQL中变为负数,而且绝对值不小!!!
loadJobEvents2MySQL.py
import os
import MySQLdb fileNames = os.listdir('C:\\task_events_unzip') conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="googleclusterdata",charset="utf8")
cursor = conn.cursor()
cursor.execute('truncate job_events') for f in fileNames:
print 'now at: '+ f
order = "load data infile 'C:/job_events_unzip/%s' into table job_events fields terminated by ',' lines terminated by '\n'" %f
print order
cursor.execute(order)
conn.commit()
loadTaskEvents2MySQL.py
import os
import MySQLdb fileNames = os.listdir('C:\\task_events_unzip') conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="googleclusterdata",charset="utf8")
cursor = conn.cursor()
cursor.execute('truncate task_events') for f in fileNames:
print 'now at: '+ f
order = "load data infile 'C:/task_events_unzip/%s' into table task_events fields terminated by ',' lines terminated by '\n'" %f
print order
cursor.execute(order)
conn.commit()
注意:这里需要相应的修改密码和使用的数据库名(db)
导入GoogleClusterData到MySQL的更多相关文章
- 【转载】 导入GoogleClusterData到MySQL
原文地址: https://www.cnblogs.com/instant7/p/4159022.html ---------------------------------------------- ...
- linux下导入、导出mysql数据库命令 下载文件到本地
一.下载到本地 yum install lrzsz sz filename 下载 rz filename 上传 linux下导入.导出mysql数据库命令 一.导出数据库用mysqldump命 ...
- linux、windows下导入、导出mysql数据库命令
一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构:[不是mysql里的命令]mysqldump -u用户名 -p密码 数据库名 > 数据 ...
- 完美转换MySQL的字符集 Mysql 数据的导入导出,Mysql 4.1导入到4.0
MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级.降级,特别是 ...
- cpanel导入大数据库(mysql)的方法
phpmyadmin是一件很方便的在线管理MySQL数据库的工具,但对于较大的数据库的导出和导入却很容易出错.特别是导入工作,通常5M已经是它的极限了.这里,主要介绍一下如何通过cPanel导入大型的 ...
- mysql 数据库导入数据报错MySQL server has gone away解决办法
mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...
- 导入数据到mysql的一种简单的方法
由于ubuntu默认自带的mysql版本号为5.5,并不能使用load data infile这样的高级的功能,因此我们写了一个通用的脚本来上传文件 shell脚本 cat ./employee.cs ...
- 随笔编号-09 批量导入数据(Mysql)报MySQL server has gone away 问题的解决方法
问题场景: 使用*.sql 脚本,批量导入数据到mysql实例中,使用DOS 界面导入的,期间,到最后一步 source D:\aaa.sql 回车后,系统提示 MySQL server has g ...
- Sqoop导入数据到mysql数据库报错:ERROR tool.ExportTool: Error during export: Export job failed!(已解决)
问题描述: Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Conta ...
随机推荐
- 解决MySQL不需要密码就能登录问题
因为执行了一个更改数据库root用户密码的命令,当我更改完后,发现用我新密码和旧密码都能登陆,于是感觉没有输密码,直接回车就能登录,而我在配置中也没有进行免密码登陆的操作,最后,执行了一条命令解决up ...
- markdown demo 学习
## <center>2019-05-08 12:05 DDoS攻击检测报告</center> ## - **MME ID**: 1123424 - **DDoS攻击类型**: ...
- ZZNU - OJ - 2080 : A+B or A-B【暴力枚举】
2080 : A+B or A-B(点击左侧标题进入zznu原题页面) 时间限制:1 Sec 内存限制:0 MiB提交:8 答案正确:3 提交 状态 讨论区 题目描述 Give you three s ...
- JDK源码那些事儿之PriorityBlockingQueue
今天继续说一说阻塞队列的实现,今天的主角就是优先级阻塞队列PriorityBlockingQueue,从命名上看觉得应该是有序的,毕竟是优先级队列,那么实际上是什么情况,我们一起看下其内部实现,提前说 ...
- 预定义的基础类型转换,BitConverter,BitArray
一.BitConverter 将预定义的基础类型与字节数据进行互转 1.将值类型转成字节数组(Unicode):BitConverter.GetBytes() byte[] data = BitCon ...
- AtCoder NIKKEI Programming Contest 2019 E. Weights on Vertices and Edges (并查集)
题目链接:https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e 题意:给出一个 n 个点 m 条边的无向图,每个点和每 ...
- 强大的捉包工具Fiddler
Fiddler2出现 creation of the root certificate was not successful 错误 http://www.zhaokeli.com/Article/63 ...
- CF1051D Bicolorings 递推
考试T2,随便推一推就好了~ code: #include <bits/stdc++.h> #define N 1015 #define mod 998244353 #define ll ...
- All 关键字
本文档已存档,并且将不进行维护. GROUP BY 子句和 ALL 关键字 SQL Server 2005 Transact-SQL 在 GROUP BY 子句中提供 ALL 关键字.只有在 SELE ...
- [Bob]Collectors Problem
https://vjudge.net/problem/UVA-10779#author=0 网络流 1.Bob向他有的贴纸连边,流量为他有的贴纸数量 2.每一种贴纸向汇点连流量为1的边 3.其余人,如 ...