本篇随笔记录如何导入google-cluster-data-2011-1-2的

job_events和task_events到MySQL

1. 下载数据

download_job_events:

  1. import urllib2
  2.  
  3. url = 'https://commondatastorage.googleapis.com/clusterdata-2011-2/'
  4. f = open('C:\\SHA256SUM')
  5. l = f.readlines()
  6. f.close()
  7. for i in l:
  8. if i.count('job_events')>0:
  9. fileAddr = i.split()[1][1:]
  10. fileName = fileAddr.split('/')[1]
  11. print 'downloading', fileName
  12. data = urllib2.urlopen(url+fileAddr).read()
  13. print 'saving', fileName
  14. fileDown = open('C:\\job_events\\'+fileName, 'wb')
  15. fileDown.write(data)
  16. fileDown.close()

download_task_events:

  1. import urllib2
  2.  
  3. url = 'https://commondatastorage.googleapis.com/clusterdata-2011-2/'
  4. f = open('C:\\SHA256SUM')
  5. l = f.readlines()
  6. f.close()
  7. for i in l:
  8. if i.count('task_events')>0:
  9. fileAddr = i.split()[1][1:]
  10. fileName = fileAddr.split('/')[1]
  11. print 'downloading', fileName
  12. data = urllib2.urlopen(url+fileAddr).read()
  13. print 'saving', fileName
  14. fileDown = open('C:\\task_events\\'+fileName, 'wb')
  15. fileDown.write(data)
  16. fileDown.close()

注意:这次用的数据是

  1. clusterdata-2011-2

不同于之前重画GoogleCLusterData中的

  1. clusterdata-2011-1

2. 解压缩

由于不能直接导入压缩包里的数据到mysql,故先将它们解压缩

unzip_job_events:

  1. import gzip
  2. import os
  3.  
  4. fileNames = os.listdir('C:\\task_events')
  5.  
  6. for l in fileNames:
  7. print 'now at: '+ l
  8. f = gzip.open('C:\\job_events\\'+l)
  9. fOut = open('C:\\job_events_unzip\\'+l[:-3], 'w')
  10. content = f.read()
  11. fOut.write(content)
  12. f.close()
  13. fOut.close()
  14. #raw_input()

unzip_task_events:

  1. import gzip
  2. import os
  3.  
  4. fileNames = os.listdir('C:\\task_events')
  5.  
  6. for l in fileNames:
  7. print 'now at: '+ l
  8. f = gzip.open('C:\\task_events\\'+l)
  9. fOut = open('C:\\task_events_unzip\\'+l[:-3], 'w')
  10. content = f.read()
  11. fOut.write(content)
  12. f.close()
  13. fOut.close()

3. 建数据库

create_job_events:

  1. create table job_events(
  2. time bigint,
  3. missing_info int,
  4. job_id bigint,
  5. event_type int,
  6. user text,
  7. scheduling_class int,
  8. job_name text,
  9. logical_job_name text)
  10. engine = myisam;

create_task_events:

  1. create table task_events(
  2. time bigint,
  3. missing_info int,
  4. job_id bigint,
  5. task_index bigint,
  6. machine_id bigint,
  7. event_type int,
  8. user text,
  9. scheduling_class int,
  10. priority int,
  11. cpu_request float,
  12. memory_request float,
  13. disk_space_request float,
  14. difference_machine_restriction boolean
  15. )engine = myisam;

注意:由于数据量非常大,这里一定要选择myisam作为engine。

4. 导入数据

由于数据中有部分为空的值,需要先设定mysql使其能够导入空值。

具体方法为:

在mysql的控制台输入

SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

之后就可以开始导入数据了。

注意!!以下代码在导入类似2.3e-10的数据会产生严重问题,具体为导入的数据在MySQL中变为负数,而且绝对值不小!!!

loadJobEvents2MySQL.py

  1. import os
  2. import MySQLdb
  3.  
  4. fileNames = os.listdir('C:\\task_events_unzip')
  5.  
  6. conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="googleclusterdata",charset="utf8")
  7. cursor = conn.cursor()
  8. cursor.execute('truncate job_events')
  9.  
  10. for f in fileNames:
  11. print 'now at: '+ f
  12. order = "load data infile 'C:/job_events_unzip/%s' into table job_events fields terminated by ',' lines terminated by '\n'" %f
  13. print order
  14. cursor.execute(order)
  15. conn.commit()

loadTaskEvents2MySQL.py

  1. import os
  2. import MySQLdb
  3.  
  4. fileNames = os.listdir('C:\\task_events_unzip')
  5.  
  6. conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="googleclusterdata",charset="utf8")
  7. cursor = conn.cursor()
  8. cursor.execute('truncate task_events')
  9.  
  10. for f in fileNames:
  11. print 'now at: '+ f
  12. order = "load data infile 'C:/task_events_unzip/%s' into table task_events fields terminated by ',' lines terminated by '\n'" %f
  13. print order
  14. cursor.execute(order)
  15. conn.commit()

注意:这里需要相应的修改密码和使用的数据库名(db)

导入GoogleClusterData到MySQL的更多相关文章

  1. 【转载】 导入GoogleClusterData到MySQL

    原文地址: https://www.cnblogs.com/instant7/p/4159022.html ---------------------------------------------- ...

  2. linux下导入、导出mysql数据库命令 下载文件到本地

    一.下载到本地 yum install lrzsz sz filename  下载 rz filename  上传   linux下导入.导出mysql数据库命令 一.导出数据库用mysqldump命 ...

  3. linux、windows下导入、导出mysql数据库命令

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构:[不是mysql里的命令]mysqldump -u用户名 -p密码 数据库名 > 数据 ...

  4. 完美转换MySQL的字符集 Mysql 数据的导入导出,Mysql 4.1导入到4.0

    MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级.降级,特别是 ...

  5. cpanel导入大数据库(mysql)的方法

    phpmyadmin是一件很方便的在线管理MySQL数据库的工具,但对于较大的数据库的导出和导入却很容易出错.特别是导入工作,通常5M已经是它的极限了.这里,主要介绍一下如何通过cPanel导入大型的 ...

  6. mysql 数据库导入数据报错MySQL server has gone away解决办法

    mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...

  7. 导入数据到mysql的一种简单的方法

    由于ubuntu默认自带的mysql版本号为5.5,并不能使用load data infile这样的高级的功能,因此我们写了一个通用的脚本来上传文件 shell脚本 cat ./employee.cs ...

  8. 随笔编号-09 批量导入数据(Mysql)报MySQL server has gone away 问题的解决方法

    问题场景: 使用*.sql 脚本,批量导入数据到mysql实例中,使用DOS 界面导入的,期间,到最后一步 source D:\aaa.sql  回车后,系统提示 MySQL server has g ...

  9. 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 ...

随机推荐

  1. NTFS文件系统概述

    NTFS简介 NTFS是Windows NT家族1的限制级专用的文件系统2.Win95.Win98识别不了NTFS,只有支持NT内核的OS才能识别NTFS文件系统.当前,NTFS取代了老式的FAT文件 ...

  2. 实例演示MaxTenuringThreshold参数及阈值动态调整策略

    在上一次[https://www.cnblogs.com/webor2006/p/11031563.html]学习了一个新的JVM对象晋升到老年代的参数“MaxTenuringThreshold”,它 ...

  3. linux网络编程之socket编程(十六)

    继续学习socket编程,今天的内容会有些难以理解,一步步来分解,也就不难了,正入正题: 实际上sockpair有点像之前linux系统编程中学习的pipe匿名管道,匿名管道它是半双工的,只能用于亲缘 ...

  4. cookie、session与用户认证组件

    1.cookie def login(request): if request.method == "GET": return render(request,"login ...

  5. 利用random模块做一个抢红包功能

    我们都知道random模块是一个生成随机数的模块,用它来做抢红包的功能很合适. 抢红包,抢到的金额是随机的,但怎么让每个人抢到的随机金额公平合理呢 比如:我想发一个100元的红包让10个人抢,我可以把 ...

  6. centos下shell脚本kill掉mysql锁表进程【笔记】

    前几天发现服务器上的mysql出现锁表了,show processlist后发现好多都是因为写进session才锁表的,看到这个想起了会不会是硬盘空间不够了,马上查看了服务器硬盘空间,发现都100%了 ...

  7. matlab(7) Regularized logistic regression : mapFeature(将feature增多) and costFunctionReg

    Regularized logistic regression : mapFeature(将feature增多) and costFunctionReg ex2_reg.m文件中的部分内容 %% == ...

  8. SMT32 启动文件详细解说

    在开发STM32的时候,无论你试试用库开发还是使用寄存器来开发首先最重要的你必须的理解STM32的启动流程,启动流程封装在启动文件里面.而这个启动文件就是Bootloader.Cortex M3的内核 ...

  9. B5G/6G新技术

    组网技术:由自组织向自支撑发展:卫星通信(大尺度衰落)采用DTN组网. 多址技术:非正交多址:Polar-SCMA:交织多址:IDMA. 信道技术:多径分集.多普勒分集.OFDM的CP用ZP替代.设计 ...

  10. learning scala How To Create Implicit Function

    println("Step 1: How to create a wrapper String class which will extend the String type") ...