安装完CDH后,发现里面的东东实在是太多了,对于一个初学大数据的来说就犹如刘姥姥进了大观园,很新奇,这些东东每个单拿出来都够喝一壶的。

接来来就是一步一步地学习了,先大致学习了每个模组大致做什么用的,然后再按模组一个一个细致学习,并实际演练。

我给自已的第一个课题是如何将Sql Server的一个表数据导入到HDFS中,网上有很多这样的教程,不过我觉得最有用的还是官网的User Guide,网上的教程直接把命令列出来,后面的参数基本没有用,因此可以考虑官网User Gruide进行详细了解。

步骤如下:

1、因为是要连Sql Server,因此需要先从Microsoft官网下载Sql server jdbc驱动,下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?displaylang=en&id=11774,

找到sqljdbc42.jar文件,上传到hadoop文件系统。

2、在Hue里新建一个WorkFlow ,拖入一个Sqoop Action

3、修改Sqoop的Command,如下图,命令:import  --connect jdbc:sqlserver://xx.xx.xx.xx:xx;databaseName=xxx --username xxx --password xxx --table au_group,然后在Files下选择第一步上传的jdbc驱动。

4、保存并Submit,就可以执行了,执行后会显示Success,如果出错的话,可以查Log,很容易找出问题。成功后就可以在Hdfs文件系统中看到在/User/用户名/下多了一个文件夹,文件夹名称即为--table指定的表名。

你会发现,这个小小的需求,实际上用到了Hue、Ozzie、Sqoop、HDFS这四个东东了。

接下来需要稍微变下,如何将Sql Server的一个表数据导入到Hive,这个如果在命令行模式下操作很简单,只要在上面的命令后面加上参数--hive-import就可以了,但在CDH 使用Hue Web 界面的集成环境里,却无法成功,问了以前碰过大数据的专家才知道这是个吭,可以用以下变通的方式实现

1、先使用Hive脚本创建表,类似以下这样的Hive Script

CREATE TABLE IF NOT EXISTS `xxx.xxxx` ( `ID` INT) COMMENT 'xxx' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE

这个Hive Script手写起来比较麻烦,可以执行create-hive-table命令加--verbose参数,可以在Log中看到完整的脚本,然后将此脚本存至HDFS。

2、执行此Hive Script脚本,可新建一Workflow里面只拉入一个Hive Script Action,这个Action指向上一步创建的脚本文件。

3、将数据从Sql Server中导入到HDFS,这一步完全跟上面的需求实现是一模一样的

4、将数据从HDFS中导入到Hive数据库中,命令参照如下

LOAD DATA INPATH '/user/het/***' OVERWRITE INTO TABLE xxx;

整个步骤我分为三步,如下图,当然也可以将三步合在一个Workflow里。

执行完所有步骤后,可以到Hive数据库中查询,一开始发现Hive数据库中所有的数据全是Null,查了资料 发现是分隔符的问题,也就是说Hive表各字段的分隔符与导入数据的分隔符是不一致的,表分隔符在创建表时可以使用

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' 

参数来指定,因此在导入数据时也指定相同的分隔符即可,也就是import Command后面加上--fields-terminated-by "\t",问题解决。

最后看下导入到Hive中的数据效果吧

												

大数据自学2-Hue集成环境中使用Sqoop组件从Sql Server导数据到Hive/HDFS的更多相关文章

  1. SQL Server 导数据 Oracle

    1. 使用Sql Server的企业管理器导入(推荐) 优点: 可以指定导入的表. 缺点: 转成Oracle时, 对应的数据类型要一个一个手动修改   2.使用ORACLE官方提供的Sql Devel ...

  2. Linux下LANMP集成环境中编译增加pdo_odbc模块

    linux版本为CentOs6.5,php集成环境为lanmp_v3.1,集成环境中默认的pdo扩展为:mysql, sqlite, sqlite2,现在有需求想链接微软的Access数据库,所以需要 ...

  3. 在离线环境中发布.NET Core至Windows Server 2008

    在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...

  4. 数据库迁移(SQL SERVER导入数据到MySql)

    地址:http://blog.csdn.net/jiaohougenyang/article/details/44937801 背景:项目最开始时使用的是SQL Server数据库,业务需求现要将数据 ...

  5. Logstash : 从 SQL Server 读取数据

    有些既存的项目把一部分日志信息写入到数据库中了,或者是由于其它的原因我们希望把关系型数据库中的信息读取到 elasticsearch 中.这种情况可以使用 logstash 的 jdbc input ...

  6. 《转》SQL Server 2008 数据维护实务

    SQL Server 2008 数据维护实务 http://blog.csdn.net/os005/article/details/7739553 http://www.cnblogs.com/xun ...

  7. 不同版本的SQL Server之间数据导出导入的方法及性能比较

    原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...

  8. 理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程

    本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(1)--简介 本文介绍SQL Server如何编译存储过程并使用计划缓存 ...

  9. sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)

    转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件 ...

随机推荐

  1. 解决npm ERR! Unexpected end of JSON input while parsing near的方法汇总

    参考链接:https://segmentfault.com/a/1190000015646531

  2. ES6语法 promise用法

    ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ...

  3. cookie、session和token

    https://zhuanlan.zhihu.com/p/25495290?utm_source=wechat_session&utm_medium=social 一.cookie 众所周知, ...

  4. 使用MySQL的mysqldump命令备份数据库和把数据库备份文件恢复

    1,备份数据库 mysql -uroot -p123456 db_name > /root/db_name.dump 2,数据库备份文件恢复 mysql -uroot -p123456 db_n ...

  5. Reported time is too far out of sync with master. Time difference of 52692ms > max allowed of 30000ms

    RegionServer与Master的时间不一致造成的.由错误内容可以看出两台机器之间最大的误差时间为30000ms,一旦超过这个值便无法启动. 解决办法:同步RegionServer与Master ...

  6. leetcode 108

    二分法建立二叉树,每次把左半部分作为左子树右半部分作为右子树,递归建立BST. #include<bits/stdc++.h> using namespace std; /** * Def ...

  7. tomcat优化和JVM修改内存

    Tomcat中的线程池(APR和ThreadPool) 2. 在Connector中指定使用共享线程池: <Connector executor="tomcatThreadPool&q ...

  8. iOS - (多图上传已封装)

      /***  上传带图片的内容,允许多张图片上传(URL)POST**  @param url                 网络请求地址*  @param images              ...

  9. Web API 入门 二 媒体类型

    还是拿上面 那篇 Web API 入门 一  的那个来讲 在product类中加一个时间属性

  10. 网络编程之Socket的TCP协议实现客户端与客户端之间的通信

    我认为当你学完某个知识点后,最好是做一个实实在在的小案例.这样才能更好对知识的运用与掌握 如果你看了我前两篇关于socket通信原理的入门文章.我相信对于做出我这个小案列是完全没有问题的!! 既然是小 ...