Sqoop在Hadoop和关系型数据库之间的数据转移
2014-02-10 19:38
567 查看
sqoop支持增量导入
查看job:
复制mysql中表结构到hive表:
表qinshiwei默认在default数据库中
mysql数据导入hive
hdfs数据导入mysql
export-dir是要导出的HDFS平面文件位置。如果不是绝对路径,指/user/username/datadir
参数:--input-fields-terminated-by '\0001'
mysql导入hdfs文件分隔符:--fields-terminated-by '\0001'
mysql导入hdfs:
mysql导入hive:
执行命令前先删除hadoop下的表名.java文件 rm /usr/lib/hadoop-0.20/tablename.java,保证表名mysql_award在hive的default数据库中不存在。
hive空值处理
sqoop会自动把NULL转换为null处理,但是hive中默认是把\N来表示null,因为预先处理不会生效,我们需要使用 --null-string 和 --null-non-string来处理空值 把\N转为\\N
Sqoop导入hive若不加hive-overwirte,会留下hadoop目录,对下次若执行相同任务有影响。
--incremental append
--check-column id
--last-value 0
这样,sqoop会从visit_log中id比0大的id开始导入,实现了增量导入。可以采用非增量导入,但是sqoop似乎会在warehouse-dir目录下建立一个源表名的目录,如果有此目录存在会报错,所以建议采用增量导入。
每天导入时的last value值不一样,如何做到每天动态的读取新的last value呢?sqoop支持把一条sqoop命令变为一个job,sqoop会通过job结果自动的更换last value的值。
最后我们得到的sqoop命令是:
创建job:
查看job:
sqoop job --meta-connect jdbc:hsqldb:hsql://ip:port/sqoop --list
复制mysql中表结构到hive表:
sqoop create-hive-table --connect jdbc:mysql://ip:port/dbName --table tableName --username username --password pass --hive-table qinshiwei
表qinshiwei默认在default数据库中
mysql数据导入hive
sqoop import --connect jdbc:mysql://ip:port/dbName --username root --password mysql-password --table t1 --hive-import
hdfs数据导入mysql
sqoop-export --connect jdbc:mysql://ip:port/dbName --username username --password pass --table qinshiwei --export-dir tablename
export-dir是要导出的HDFS平面文件位置。如果不是绝对路径,指/user/username/datadir
参数:--input-fields-terminated-by '\0001'
mysql导入hdfs文件分隔符:--fields-terminated-by '\0001'
mysql导入hdfs:
sqoop import --connect jdbc:mysql://Hadoop48/toplists --username root --table test -m 1
mysql导入hive:
sqoop import --connect jdbc:mysql://ip/tjcommon --verbose -m 1 --username username --password pass --hive-overwrite --direct --table tablename --hive-import --create-hive-table --hive-table mysql_award --fields-terminated-by '\t' --lines-terminated-by '\n' --append
执行命令前先删除hadoop下的表名.java文件 rm /usr/lib/hadoop-0.20/tablename.java,保证表名mysql_award在hive的default数据库中不存在。
sqoop import --connect jdbc:mysql://ip/dbName --username username --password pass --table qinshiwei -m 1 --hive-import --hive-table err --hive-overwrite --hive-delims-replacement "\t" --incremental append --last-value 0 --check-column id
hive空值处理
sqoop会自动把NULL转换为null处理,但是hive中默认是把\N来表示null,因为预先处理不会生效,我们需要使用 --null-string 和 --null-non-string来处理空值 把\N转为\\N
sqoop import ... --null-string '\\N' --null-non-string '\\N'
Sqoop导入hive若不加hive-overwirte,会留下hadoop目录,对下次若执行相同任务有影响。
--incremental append
--check-column id
--last-value 0
这样,sqoop会从visit_log中id比0大的id开始导入,实现了增量导入。可以采用非增量导入,但是sqoop似乎会在warehouse-dir目录下建立一个源表名的目录,如果有此目录存在会报错,所以建议采用增量导入。
每天导入时的last value值不一样,如何做到每天动态的读取新的last value呢?sqoop支持把一条sqoop命令变为一个job,sqoop会通过job结果自动的更换last value的值。
最后我们得到的sqoop命令是:
sqoop job visit_import --create -- import --connect jdbc:mysql://localhost:3306/main --username root --password pass --table user --columns "id,url,time" --direct --hive-import --hive-table hive_visit_log --incremental append --check-column id --last-value 0 sqoop job --exec visit_import
创建job:
sqoop job --meta-connect jdbc:hsqldb:hsql://ip:port/sqoop --create visit_import -- import --connect jdbc:mysql://ip:port/dbname --username username --password pass --table table --direct --hive-import --hive-table mysql_award --incremental append --check-column id --last-value 0
相关文章推荐
- 使用sqoop 在关系型数据库和Hadoop之间实现数据的抽取
- 今天发现了一篇介绍Sqoop中通过hadoop mapreduce从关系型数据库import数据分析
- 使用sqoop实现关系型数据库、HDFS、Hive之间数据的导入导出
- <关于数据仓库>基于docker的Mysql与Hadoop/Hive之间的数据转移 (使用Apache Sqoop™)
- sh调取sqoop脚本每天增量跑数据 从hadoop到关系型数据库
- 开始玩hadoop14 ---从sql 关系数据库和 hadoop 之间的数据交换---Sqoop
- Sqoop源码分析(四) Sqoop中通过hadoop mapreduce从关系型数据库import数据分析
- 使用Sqoop导入导出关系型数据库数据
- [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 数据在mysq和hdfs之间的相互转换
- Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具
- sqoop (Hadoop(Hive)与传统的数据库(mysql..)间进行数据的传递工具) 基础概念
- Sqoop2入门之导入关系型数据库数据到HDFS上(sqoop2-1.99.4版本)
- hadoop学习之-Sqoop与关数据库(mysql)之间导入实践
- sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
- Domino数据转移到关系型数据库(一)
- Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递
- sqoop导入关系型数据库的数据至hive
- Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)
- 用Sqoop把数据从HDFS导入到关系型数据库