hadoop计算需要在hdfs文件系统上进行,因此每次计算之前必须把需要用到的文件(我们称为原始文件)都上传到hdfs上。文件上传到hdfs上通常有三种方法:
a hadoop自带的dfs服务,put;
b hadoop的API,Writer对象可以实现这一功能;
c 调用OTL可执行程序,数据从数据库直接进入hadoop
由于存在ETL层,因此第三种方案不予考虑
将a、b方案进行对比,如下:
1 空间:方案a在hdfs上占用空间同本地,因此假设只上传日志文件,则保存一个月日志文件将消耗掉约10T空间,如果加上这期间的各种维表、事实表,将占用大约25T空间
方案b经测试,压缩比大约为3~4:1,因此假设hdfs空间为100T,原来只能保存约4个月的数据,现在可以保存约1年
2 上传时间:方案a的上传时间经测试,200G数据上传约1小时
方案b的上传时间,程序不做任何优化,大约是以上的4~6倍,但存在一定程度提升速度的余地
3 运算时间:经过对200G数据,大约4亿条记录的测试,如果程序以IO *** 作为主,则压缩数据的计算可以提高大约50%的速度,但如果程序以内存 *** 作为主,则只能提高5%~10%的速度
4 其它:未压缩的数据还有一个好处是可以直接在hdfs上查看原始数据。压缩数据想看原始数据只能用程序把它导到本地,或者利用本地备份数据
压缩格式:按照hadoop api的介绍,压缩格式分两种:BLOCK和RECORD,其中RECORD是只对value进行压缩,一般采用BLOCK进行压缩。
对压缩文件进行计算,需要用SequenceFileInputFormat类来读入压缩文件,以下是计算程序的典型配置代码:
JobConf conf = new JobConf(getConf(), log.class)
conf.setJobName(”log”)
conf.setOutputKeyClass(Text.class)//set the map output key type
conf.setOutputValueClass(Text.class)//set the map output value type
conf.setMapperClass(MapClass.class)
//conf.setCombinerClass(Reduce.class)//set the combiner class ,if havenot, use Recuce class for default
conf.setReducerClass(Reduce.class)
conf.setInputFormat(SequenceFileInputFormat.class)//necessary if use compress
接下来的处理与非压缩格式的处理一样
如何向 hadoop 导入数据1.2 使用Hadoop shell命令导入和导出数据到HDFS
实验准备
实例需要用到的数据-weblog_entries.txt
在namenode创建2个文件夹用来存放实验用的数据
mkdir /home/data 1
mkdir /home/data_download1
将weblog_entries.txt上传到namenode里的/home/data文件夹(我使用SecureFXPortable.exe 工具)
注:以下命令都是在namenode节点运行的
实验过程
1.在HDFS中创建一个新的文件夹,用于保存weblog_entries.txt
hadoop fs -mkdir /data/weblogs1
2.将weblog_entries.txt文件从本地文件系统复制到HDFS刚创建的新文件夹下
cd /home/data1
hadoop fs -copyFromLocal weblog_entries.txt /data/weblogs1
3.列出HDFS上weblog_entries.txt文件的信息:
hadoop fs –ls /data/weblogs/weblog_entries.txt 1
4.将HDFS上的weblog_entries.txt文件复制到本地系统的当前文件夹下
cd /home/data_download1
hadoop fs -copyToLocal /data/weblogs/weblog_entries.txt ./weblog_entries.txt 1
最后用 ls 命令检验下时候将weblog_entries.txt 下载到本地
如何向oracle 10g数据库导入数据Oracle 11g数据导入到10g
一、在11g服务器上,使用expdp命令备份数据
11g 导出语句:EXPDP USERID='facial/facial@orcl as sysdba' schemas=facialdirectory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log version=10.2.0.1.0
二、在10g服务器上,使用impdp命令恢复数据
准备工作:1.建库2.建表空间3.建用户并授权4.将test.dmp拷贝到10g的dpdump目录下
--创建表空间
create tablespace TS_Facial datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Facial.DBF' size 500M autoextend on next 50M
--创建用户
create user Facial identified by Facial default tablespace TS_Facial
--授权给用户
grant connect,resource,dba to Facial
test.dmp 和 test.log 放在E:\oracle\product\10.2.0\admin\orcl\dpdump目录下
10g 导入语句:IMPDP USERID='facial/facial@orcl as sysdba' schemas=facialdirectory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log version=10.2.0.1.0
如何向mongodb分片集群导入数据下载mongoDB(mongoDB下载地址),笔者使用的是mongoDB 2.0.4的Linux 64-bit版本。
解压:tar xzf mongo.tgz
默认情况下,mongoDB将数据存储在/data/db目录下,但它不会自动创建该目录,所以我们需要手动创建它:
$ sudo mkdir -p /data/db/
$ sudo chown `id -u` /data/db
也可以使用--dbpath参数来指定别的数据库目录。
如果只是想在单机上测试一下mongoDB的话,非常简单,首先启动MongoDB server,
$ ./mongodb-xxxxxxx/bin/mongod
在另外一个终端,连接到我们启动的server:
$ ./mongodb-xxxxxxx/bin/mongo
>db.foo.save( { a : 1 } )
>db.foo.find()
如何向clementine12.0中导入数据库数据在resources找到database节点连上去就可以,之后按照你的用户名和密码填好就可以,但是在之前要配置数据库。
如何向sql server2008中导入数据库打开SQL Server Management Studio,在对象资源管理器中,展开“SQL Server 实例”→“数据库”→“MySchool”节点,单击鼠标右键,选择“任务”→“导出数据”命令。出现导入和导出向导的欢迎界面,单击“下一步”按钮,出现“选择数据源”对话框,如图
在“选择数据源”对话框中设置如下选项:
数据源:SQL Native Client 10.0。
服务器名称:DC。
身份验证:Windows身份验证。
数据库:MySchool。
单击“下一步”按钮,出现“选择目标”对话框,设置如下选项(如图所示):
目标:平面文件目标。
文件名:C:\student.txt。
格式:带分隔符。
单击“下一步”按钮,出现“指定表复制或查询”对话框,如图所示。
在“指定表复制或查询”对话框中选中“复制一个或多个表或视图的数据”单选按钮,单击“下一步”按钮,出现“配置平面文件目标”对话框,如图所示。
设置源表或源视图为MySchool.dbo.student,单击“下一步”按钮。
在“保存并执行包”对话框中选中“立即执行”复选框,如图所示,然后单击“下一步”按钮。
在如图所示的对话框中单击“完成”按钮。
如图所示,当执行完后,单击“关闭”按钮。
8
在Windows资源管理器中打开C:\student.txt文件,验证导出的结果。
如何导入数据
工具/原料
sql2008
方法/步骤
登录sql2008数据库,其实其他版本的数据库也是一样的原理
使用windows账户登录,登录成功之后打开资源管理器窗口
在数据库上单击右键,选择【新建数据库】
在d出的新建数据库窗口中,输入数据库名字【test】然后点击确定
数据库【test】新建完成,在数据库上单击右键,选择【任务】【导入数据】
d出导入数据向导,选择下一步
数据源选择【Excel】,文件路径选择我们需要导入的文件
目标数据库选择我们刚才新建的【test】数据库,其他保存默认不变,一直单击【下一步】
勾选我们需要导入的Excel表,如图所示,然后单击下一步,完成
开始导入数据,如图所示,成功导入,点击【关闭】
这样我们就导入了Excel中的数据
如何从linux向dbeaver导入数据1、右击新建连接 2、选择Oracle 3、将要填的数据都填好了,下拉框选sid,点测试,通过就ok了 4、狂点下一步,最后完成。 注:无需安装oracle客户端。只有这个dbeaver就可以,只是需要个驱动包这个不用说。不会加驱动可以追问
如何从EXCEL向MATLAB导入数据首先把excel文件放在work文件夹里,假设文件名为a.xls。
然后在matlab命令窗口输入a=xlsread('a.xls')
此时,a矩阵即为exel里对应的数据
使用Matlab中的Excel Link就可以了。
如果使用Excel 2003版本, *** 作如下:
1 打开Excel。
2 在菜单栏中选择工具→加载项→浏览。
3 在Matlab的安装目录下打开toolbox\exlink文件夹,选择EXCLLINK.XLA,点击确认。
4 自动回到加载项对话框后,确保对话框中有“Excel
Link”,选中后点击确认按钮即可,菜单栏中自动添加了Matlab加载项。
5 使用其中的putmatrix,既可以将数据导入到Matlab中。
如果使用Excel 2007版本, *** 作如下:
1 打开Excel。
2 点击左上的office按钮→Excel选项→转到→加载项→浏览。
3 在Matlab的安装目录下打开toolbox\exlink文件夹,选择EXCLLINK.XLA,点击确认。
4 自动回到加载项对话框后,确保对话框中有“ExcelLink”,选中后点击确认按钮即可,菜单栏中自动添加了Matlab加载项。
5 使用其中的putmatrix,既可以将数据导入到Matlab中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)