`

利用sqoop将hive数据导入导出数据到mysql

 
阅读更多

运行环境  centos 5.6   hadoop  hive
sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具


在使用过程中可能遇到的问题:

  • sqoop依赖zookeeper,所以必须配置ZOOKEEPER_HOME到环境变量中。
  • sqoop-1.2.0-CDH3B4依赖hadoop-core-0.20.2-CDH3B4.jar,所以你需要下载hadoop-0.20.2-CDH3B4.tar.gz,解压缩后将hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar复制到sqoop-1.2.0-CDH3B4/lib中。

1  首先安装sqoop,如果你使用的是clouder分发版的话就非常简单 
   # yum install sqoop
  如果用官方版本的话
   # cd /etc/yum.repos.d
   # wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
   # yum -y install sqoop
   sqoop就会安装完成
2  使用sqoop
   首先将mysql-connector-java-5.1.16-bin.jar文件复制到/usr/lib/sqoop/lib文件夹下
  
3  导入导出数据库
   1)列出mysql数据库中的所有数据库命令
  #  sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456
  
   2)连接mysql并列出数据库中的表命令
   # sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username root --password 123456
   命令中的test为mysql数据库中的test数据库名称  username password分别为mysql数据库的用户密码
  
   3)将关系型数据的表结构复制到hive中
 sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table username --username root --password 123456 --hive-table test
其中 --table username为mysql中的数据库test中的表   --hive-table test 为hive中新建的表名称
  
   4)从关系数据库导入文件到hive中
sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password mysql-password --table t1 --hive-import

   5)将hive中的表数据导入到mysql中

./sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03

如果报错
11/08/05 10:51:22 INFO mapred.JobClient: Running job: job_201108051007_0010 
11/08/05 10:51:23 INFO mapred.JobClient:  map 0% reduce 0% 
11/08/05 10:51:36 INFO mapred.JobClient: Task Id : attempt_201108051007_0010_m_000000_0, Status : FAILED 
java.util.NoSuchElementException 
        at java.util.AbstractList$Itr.next(AbstractList.java:350) 
        at uv_info.__loadFromFields(uv_info.java:194) 
        at uv_info.parse(uv_info.java:143) 
        at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:79) 
        at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:38) 
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) 
        at com.cloudera.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:187) 
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647) 
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323) 
        at org.apache.hadoop.mapred.Child$4.run(Child.java:270) 
        at java.security.AccessController.doPrivileged(Native Method) 
        at javax.security.auth.Subject.doAs(Subject.java:396) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127) 
        at org.apache.hadoop.mapred.Child.main(Child.java:264) 
此错误的原因为sqoop解析文件的字段与MySql数据库的表的字段对应不上造成的。因此需要在执行的时候给sqoop增加参数,告诉sqoop文件的分隔符,使它能够正确的解析文件字段。

hive默认的字段分隔符为'\001'
./sqoop export --connect jdbc:mysql://localhost:3306/datacenter --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03 --input-fields-terminated-by '\t'

参考http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html#_literal_sqoop_create_hive_table_literal

 

 

分享到:
评论

相关推荐

    2、sqoop导入(RMDB-mysql、sybase到HDFS-hive)

    在本主题中,我们将深入探讨 Sqoop 的导入功能,特别是如何将数据从 MySQL 和 Sybase 数据库导入到 HDFS,并进一步加载到 Hive 表中。 ### 一、Sqoop 导入介绍 1. **语法结构**: Sqoop 导入数据的基本语法如下:...

    数据同步Sqoop用法之mysql与Hive导入导出.docx

    Sqoop 提供了灵活的数据导入方式,可以将 MySQL 数据库中的数据导入到 Hive 表中。例如,以下命令可以将 MySQL 数据库中的 people_access_log 表导入到 Hive 表 web.people_access_log 中: sqoop import \ --...

    sqoop 从 hive 导到mysql遇到的问题.docx

    例如,list-databases 命令用于列出 MySQL 数据库中的所有数据库,list-tables 命令用于列出指定数据库中的所有表格,import 命令用于将数据从 MySQL 导入到 Hive,export 命令用于将数据从 Hive 导出到 MySQL。...

    实战Sqoop数据导入及大数据用户行为案例分析

    实战Sqoop数据导入及大数据用户行为案例分析...08_Sqoop将MySQL数据导入Hive表中 09_Sqoop的导出及脚本中使用的方式 10_案例分析-动态分区的实现 11_案例分析-源表的分区加载创建 12_案例分析-指标分析使用Sqoop导出

    23-Sqoop数据导入导出1

    本篇将详细介绍Sqoop的导入和导出过程,以及在MySQL、HDFS、Hive和HBase之间的具体操作。 ### Sqoop导入原理 1. **JDBC检查**:在开始导入前,Sqoop通过JDBC连接数据库,获取表结构和列信息,如数据类型,将其映射...

    使用sqoop抽取mysql数据

    Sqoop 是一个用于在 Hadoop 和关系型数据库之间进行数据导入导出的工具,它使得在大数据处理场景下,能够方便地将结构化的数据从 MySQL 这样的 RDBMS(关系型数据库管理系统)转移到 Hadoop 的 HDFS(Hadoop 分布式...

    Sqoop数据库数据导入导出教程PDF

    把关系型数据库的数据导入到Hadoop系统(如HDFS,Hbase和Hive中) 把数据从Hadoop系统里面抽取并导出到关系型数据库中 利用MapReduce加快数据处理速度 ·批处理方式进行数据传输 Sqoop 优势 ·¬高效、可控地利用资源 ...

    Sqoop数据采集工具简介、安装、使用学习笔记(配合Hive和Hbase)

    对于 Sqoop2,可以通过先将数据导入 HDFS,然后再使用 Load 或 Put 命令将数据加载到 Hive 或 HBase 中来解决。 - **Hive/HBase -> RDBMS**:两者均不支持直接转换,但可以通过以下步骤实现:先将数据从 Hive 或 ...

    大数据实践-sqoop数据导入导出.doc

    3. Sqoop会生成MapReduce作业,执行数据导入过程,将数据从MySQL导入到HDFS。 ### 三、数据导出:HDFS->MySQL 1. 数据导出是逆向操作,使用`sqoop export`命令,指定HDFS中数据的路径,数据库连接参数,以及要写入...

    Hive、MySQL、HBase数据互导

    使用Sqoop将数据从Hive导入MySQL**: - 使用Sqoop连接到Hive并指定要导出的表。 - 设置目标MySQL数据库的连接信息,包括用户名、密码、数据库名和表名。 - 执行Sqoop命令,将Hive表的数据导入到MySQL中。 **3. ...

    mysql-connector-5.1.39,配合sqoop1.4.7和hive2.1.1使用

    4. **数据分析**:在Hadoop集群上,Hive可以读取由Sqoop导入的MySQL数据进行大规模的分析工作,利用Hadoop的分布式计算能力处理大量数据,然后将结果通过Sqoop返回到MySQL,或者直接在MySQL中进行进一步的处理和展示...

    hive2.1.1_mysql_sqoop.zip

    它允许用户将数据导入到Hadoop的分布式文件系统(HDFS),或者将Hadoop处理后的数据导出回关系数据库。`sqoop-1.4.7.bin.tar.gz`是Sqoop的1.4.7版本,这个二进制包包含了运行和管理Sqoop所需的全部文件。 MySQL ...

    sqoop学习资源

    - **直接导入**:对于某些数据库,如 MySQL, Sqoop 支持直接将数据写入 HDFS,跳过 MapReduce,提升效率。 11. **安全性** Sqoop 支持使用 Kerberos 进行身份验证,以确保数据传输的安全性。 通过这个压缩包中...

    hadoop平台下的数据导入导出工具sqoop

    - **导出至Hive**:使用`--hive-import`选项,可以直接将数据导入到Hive表中。 #### 七、进阶功能 - **增量导出**:通过`--check-column <column-name> --incremental lastmodified`参数实现。 - **更新模式**:...

    BigData:Sqoop+Hive+MySQL 纽约证券交易所数据集

    Sqoop 将数据从mysql导入HIVE 操作hive中的数据来计算每个股票代码的股票量 将此数据存储到 hive 上的 stock_volume 表中 使用 sqoop 将此数据从 hive 导出回 mysql 进行报告。 待开发。 用于导入、数据操作和...

    第15章-Sqoop+Hive+Hbase+Kettle+R某技术论坛日志分析项目案例.docx

    7. **Sqoop MySQL数据导入**:使用Sqoop将MySQL中的数据导入到Hive表中。 8. **R语言可视化分析**:利用R语言绘制图表,直观展示数据分析结果。 通过完成以上任务,不仅可以掌握各工具的具体操作步骤,还能深入理解...

    HIVE&&SQOOP

    6. **映射和减少作业**:Sqoop能够将数据导入导出过程转换为MapReduce作业,利用Hadoop的并行处理能力。 结合使用Hive和Sqoop,我们可以实现这样的工作流程: 1. **数据获取**:使用Sqoop从关系型数据库导入数据到...

    分布式数据库课程设计+基于Hbase的滴滴出行数据分析+Hive+Hadoop+Mysql+Sqoop+可视化

    Sqoop 是一个用来在 Hadoop 和传统数据库之间进行数据迁移的工具,它可以将数据导入到 Hadoop 的 HDFS 中,也可以将 Hadoop 中的数据导出到关系型数据库中。在滴滴出行项目中,Sqoop 负责将 Hive 中经过分析的数据...

    sqoop导入数据到hdfs路径

    ### Sqoop导入数据到HDFS路径详解 #### 一、Sqoop简介 ...通过以上详细解析和说明,我们不仅了解了如何使用Sqoop将数据从MySQL导入到HDFS中,还学习了一些高级用法和注意事项,这对于实际操作中解决问题非常有帮助。

    yinian_hive_increase_sqoop:sqoop从mysql同步数据到hive

    【标题】"yinian_hive_increase_sqoop:sqoop从mysql同步数据到hive" 描述了一种使用Apache Sqoop工具将数据从MySQL数据库高效地导入到Hadoop的Hive数据仓库的过程。这个过程在大数据处理中至关重要,因为它允许用户...

Global site tag (gtag.js) - Google Analytics