设为首页 收藏本站
查看: 787|回复: 0

[经验分享] Hadoop入门(三):Sqoop和Hive的使用

[复制链接]

尚未签到

发表于 2016-12-11 06:30:22 | 显示全部楼层 |阅读模式
1安装Hive
1.1下载解压
  wget http://mirrors.cnnic.cn/apache/hive/stable/hive-0.10.0.tar.gz
  tar xzvfhive-0.10.0.tar.gz
1.2配置环境变量
  exportHIVE_HOME=/usr/local/src/hive-0.10.0
  export PATH=$HIVE_HOME/bin:$PATH
1.3建立Hive仓库目录
  hadoop fs -mkdir/tmp
  hadoop fs -mkdir/user/hive/warehouse
  hadoop fs -chmodg+w /tmp
  hadoop fs -chmodg+w /user/hive/warehouse
DSC0000.jpg

1.4启动命令行
  通过hive命令进入命令行,操作与MySQL的命令行类似:
DSC0001.jpg

  

2安装Sqoop
2.1下载解压
  下载适合Hadoop 0.20版本的Sqoop:
  wget http://mirrors.cnnic.cn/apache/sqoop/1.4.3/sqoop-1.4.3.bin__hadoop-0.20.tar.gz
  tar -xvf sqoop-1.4.3.bin__hadoop-0.20.tar.gz
2.2配置环境变量
  export SQOOP_HOME=/usr/local/src/sqoop-1.4.3.bin__hadoop-0.20
  export PATH=$SQOOP_HOME/bin:$PATH
  export HADOOP_COMMON_HOME=/home/admin/hadoop-0.20.2
  export HADOOP_MAPRED_HOME=/home/admin/hadoop-0.20.2
  

3用Sqoop导入数据到HIVE
3.1导入HDFS
  我们从MySQL数据库中导入一张表的数据来测试一下Sqoop是否配置成功。首先上传mysql-connector-java-5.1.23.jar到sqoop的lib文件夹下,然后在sqoop/bin下执行下列命令:
  sqoop import--connect jdbc:mysql://ip/database --table tb1 --username user -P
  ===============================================================================
  Warning: /usr/lib/hbase does not exist!HBase imports will fail.
  Please set $HBASE_HOME to the root of yourHBase installation.
  Enter password:
  13/06/07 16:51:46 INFOmanager.MySQLManager: Preparing to use a MySQL streaming resultset.
  13/06/07 16:51:46 INFO tool.CodeGenTool: Beginning codegeneration
  13/06/07 16:51:48 INFO manager.SqlManager:Executing SQL statement: SELECT t.* FROM `tb1` AS t LIMIT 1
  13/06/07 16:51:48 INFO manager.SqlManager:Executing SQL statement: SELECT t.* FROM `tb1` AS t LIMIT 1
  13/06/07 16:51:48 INFOorm.CompilationManager: HADOOP_MAPRED_HOME is /home/admin/hadoop-0.20.2
  13/06/07 16:51:48 INFOorm.CompilationManager: Found hadoop core jar at:/home/admin/hadoop-0.20.2/hadoop-0.20.2-core.jar
  Note:/tmp/sqoop-root/compile/44c4b6c5ac57de04b487eb90633ac33e/tb1.java uses oroverrides a deprecated API.
  Note: Recompile with -Xlint:deprecation fordetails.
  13/06/07 16:51:54 INFO orm.CompilationManager:Writing jar file:/tmp/sqoop-root/compile/44c4b6c5ac57de04b487eb90633ac33e/tb1.jar
  13/06/07 16:51:54 WARNmanager.MySQLManager: It looks like you are importing from mysql.
  13/06/07 16:51:54 WARNmanager.MySQLManager: This transfer can be faster! Use the --direct
  13/06/07 16:51:54 WARNmanager.MySQLManager: option to exercise a MySQL-specific fast path.
  13/06/07 16:51:54 INFOmanager.MySQLManager: Setting zero DATETIME behavior to convertToNull (mysql)
  13/06/07 16:51:54 INFO mapreduce.ImportJobBase:Beginning import of tb1
  13/06/07 16:51:57 INFOdb.DataDrivenDBInputFormat: BoundingValsQuery: SELECT MIN(`id`), MAX(`id`) FROM`tb1`
  13/06/07 16:51:59 INFO mapred.JobClient:Running job: job_201306071651_0001
  13/06/07 16:52:00 INFOmapred.JobClient: map 0% reduce 0%
  13/06/07 16:52:38 INFOmapred.JobClient: map 50% reduce 0%
  13/06/07 16:52:44 INFOmapred.JobClient: map 100% reduce 0%
  13/06/07 16:52:46 INFO mapred.JobClient:Job complete: job_201306071651_0001
  13/06/07 16:52:46 INFO mapred.JobClient:Counters: 5
  13/06/07 16:52:46 INFOmapred.JobClient: Job Counters
  13/06/07 16:52:46 INFOmapred.JobClient: Launched map tasks=2
  13/06/07 16:52:46 INFOmapred.JobClient: FileSystemCounters
  13/06/07 16:52:46 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=212
  13/06/07 16:52:46 INFOmapred.JobClient: Map-Reduce Framework
  13/06/07 16:52:46 INFOmapred.JobClient: Map input records=2
  13/06/07 16:52:46 INFOmapred.JobClient: Spilled Records=0
  13/06/07 16:52:46 INFO mapred.JobClient: Map output records=2
  13/06/07 16:52:46 INFOmapreduce.ImportJobBase: Transferred 212 bytes in 51.383 seconds (4.1259bytes/sec)
  13/06/07 16:52:46 INFOmapreduce.ImportJobBase: Retrieved 2 records.
  ===============================================================================
  数据文件默认被导入到当前用户文件夹下表名对应的文件夹了:
DSC0002.jpg

  Sqoop默认会同时启动四个Map任务来加速数据导入,可以通过-m 1命令来强制只启动一个map任务,这样就只会在HDFS中生成一个数据文件了。因为tb1表目前就两条数据,所以一共产生两个文件,查看下生成的文件内容:
DSC0003.jpg

3.2创建Hive表
  首先在hive命令行中创建tb1表。注意hive支持的数据类型有限,并且一定要设置表的分隔符为逗号,否则Hive默认分隔符为Ctrl+A。
  CREATE TABLE tb1(
  id int,
  ......
  ) row format delimited fields terminated by ‘,’;
  也可以通过下面的命令让Sqoop根据MySQL表结构自动创建出Hive表:
  sqoop create-hive-table --connect jdbc:mysql://ip/database --table tb1 --hive-table tb1 --username user -P
3.3导入Hive
  现在导入HDFS中的文件到Hive,注意Hive从HDFS导入数据后,会将HDFS中的文件/user/root/tb1移动到/user/hive/tb1:
  LOADDATA INPATH '/user/root/tb1/part-m-*' OVERWRITE INTO TABLE tb1
3.4一条强大的命令
  上面的从MySQL导出数据到HDFS、创建Hive表格、导入数据到Hive三步,可以直接用一条Sqoop命令完成:
  sqoop import--connect jdbc:mysql://ip/database --table tb1 --username user -P --hive-import
4用HiveQL做分析
  待续......
  

参考资料
  Hive安装
  https://cwiki.apache.org/confluence/display/Hive/GettingStarted
  http://sqoop.apache.org/docs/1.99.1/Installation.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-312406-1-1.html 上篇帖子: RPC and Serialization with Hadoop, Thrift, and Protocol Buffers 下篇帖子: Hadoop家族安装系列(2)——安装Mahout0.9框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表