运行环境 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
相关推荐
在本主题中,我们将深入探讨 Sqoop 的导入功能,特别是如何将数据从 MySQL 和 Sybase 数据库导入到 HDFS,并进一步加载到 Hive 表中。 ### 一、Sqoop 导入介绍 1. **语法结构**: Sqoop 导入数据的基本语法如下:...
Sqoop 提供了灵活的数据导入方式,可以将 MySQL 数据库中的数据导入到 Hive 表中。例如,以下命令可以将 MySQL 数据库中的 people_access_log 表导入到 Hive 表 web.people_access_log 中: sqoop import \ --...
例如,list-databases 命令用于列出 MySQL 数据库中的所有数据库,list-tables 命令用于列出指定数据库中的所有表格,import 命令用于将数据从 MySQL 导入到 Hive,export 命令用于将数据从 Hive 导出到 MySQL。...
实战Sqoop数据导入及大数据用户行为案例分析...08_Sqoop将MySQL数据导入Hive表中 09_Sqoop的导出及脚本中使用的方式 10_案例分析-动态分区的实现 11_案例分析-源表的分区加载创建 12_案例分析-指标分析使用Sqoop导出
本篇将详细介绍Sqoop的导入和导出过程,以及在MySQL、HDFS、Hive和HBase之间的具体操作。 ### Sqoop导入原理 1. **JDBC检查**:在开始导入前,Sqoop通过JDBC连接数据库,获取表结构和列信息,如数据类型,将其映射...
Sqoop 是一个用于在 Hadoop 和关系型数据库之间进行数据导入导出的工具,它使得在大数据处理场景下,能够方便地将结构化的数据从 MySQL 这样的 RDBMS(关系型数据库管理系统)转移到 Hadoop 的 HDFS(Hadoop 分布式...
把关系型数据库的数据导入到Hadoop系统(如HDFS,Hbase和Hive中) 把数据从Hadoop系统里面抽取并导出到关系型数据库中 利用MapReduce加快数据处理速度 ·批处理方式进行数据传输 Sqoop 优势 ·¬高效、可控地利用资源 ...
对于 Sqoop2,可以通过先将数据导入 HDFS,然后再使用 Load 或 Put 命令将数据加载到 Hive 或 HBase 中来解决。 - **Hive/HBase -> RDBMS**:两者均不支持直接转换,但可以通过以下步骤实现:先将数据从 Hive 或 ...
3. Sqoop会生成MapReduce作业,执行数据导入过程,将数据从MySQL导入到HDFS。 ### 三、数据导出:HDFS->MySQL 1. 数据导出是逆向操作,使用`sqoop export`命令,指定HDFS中数据的路径,数据库连接参数,以及要写入...
使用Sqoop将数据从Hive导入MySQL**: - 使用Sqoop连接到Hive并指定要导出的表。 - 设置目标MySQL数据库的连接信息,包括用户名、密码、数据库名和表名。 - 执行Sqoop命令,将Hive表的数据导入到MySQL中。 **3. ...
4. **数据分析**:在Hadoop集群上,Hive可以读取由Sqoop导入的MySQL数据进行大规模的分析工作,利用Hadoop的分布式计算能力处理大量数据,然后将结果通过Sqoop返回到MySQL,或者直接在MySQL中进行进一步的处理和展示...
它允许用户将数据导入到Hadoop的分布式文件系统(HDFS),或者将Hadoop处理后的数据导出回关系数据库。`sqoop-1.4.7.bin.tar.gz`是Sqoop的1.4.7版本,这个二进制包包含了运行和管理Sqoop所需的全部文件。 MySQL ...
- **直接导入**:对于某些数据库,如 MySQL, Sqoop 支持直接将数据写入 HDFS,跳过 MapReduce,提升效率。 11. **安全性** Sqoop 支持使用 Kerberos 进行身份验证,以确保数据传输的安全性。 通过这个压缩包中...
- **导出至Hive**:使用`--hive-import`选项,可以直接将数据导入到Hive表中。 #### 七、进阶功能 - **增量导出**:通过`--check-column <column-name> --incremental lastmodified`参数实现。 - **更新模式**:...
Sqoop 将数据从mysql导入HIVE 操作hive中的数据来计算每个股票代码的股票量 将此数据存储到 hive 上的 stock_volume 表中 使用 sqoop 将此数据从 hive 导出回 mysql 进行报告。 待开发。 用于导入、数据操作和...
7. **Sqoop MySQL数据导入**:使用Sqoop将MySQL中的数据导入到Hive表中。 8. **R语言可视化分析**:利用R语言绘制图表,直观展示数据分析结果。 通过完成以上任务,不仅可以掌握各工具的具体操作步骤,还能深入理解...
6. **映射和减少作业**:Sqoop能够将数据导入导出过程转换为MapReduce作业,利用Hadoop的并行处理能力。 结合使用Hive和Sqoop,我们可以实现这样的工作流程: 1. **数据获取**:使用Sqoop从关系型数据库导入数据到...
Sqoop 是一个用来在 Hadoop 和传统数据库之间进行数据迁移的工具,它可以将数据导入到 Hadoop 的 HDFS 中,也可以将 Hadoop 中的数据导出到关系型数据库中。在滴滴出行项目中,Sqoop 负责将 Hive 中经过分析的数据...
### Sqoop导入数据到HDFS路径详解 #### 一、Sqoop简介 ...通过以上详细解析和说明,我们不仅了解了如何使用Sqoop将数据从MySQL导入到HDFS中,还学习了一些高级用法和注意事项,这对于实际操作中解决问题非常有帮助。
【标题】"yinian_hive_increase_sqoop:sqoop从mysql同步数据到hive" 描述了一种使用Apache Sqoop工具将数据从MySQL数据库高效地导入到Hadoop的Hive数据仓库的过程。这个过程在大数据处理中至关重要,因为它允许用户...