Sqoop 导入数据到hdfs和hive总结
- 使用帮助
Sqoop help 查看所有的sqoop的帮助
Sqoop help import 查看import命令的帮助
Eg: sqoop导入到HDFS的一个简单示例:
sqoop import
--connect jdbc:mysql://192.168.56.121:3306/metastore
--username hiveuser
--password redhat
--table TBLS
- 导入到HDFS
Eg:
sqoop import
--connect jdbc:mysql://192.168.56.121:3306/metastore
--username hiveuser
--password redhat
--table TBLS
--target-dir /user/hive/result
注意
:
- mysql jdbc url 请使用 ip 地址
- 如果重复执行,会提示目录已经存在,可以手动删除
- 如果不指定 --target-dir,导入到用户家目录下的 TBLS 目录
其他参数说明
参数 |
说明 |
--append |
将数据追加到hdfs中已经存在的dataset中。使用该参数,sqoop将把数据先导入到一个临时目录中,然后重新给文件命名到一个正式的目录中,以避免和该目录中已存在的文件重名。 |
--as-avrodatafile |
将数据导入到一个Avro数据文件中| |
--as-sequencefile |
将数据导入到一个sequence文件中 |
--as-textfile |
将数据导入到一个普通文本文件中,生成该文本文件后,可以在hive中通过sql语句查询出结果。 |
--boundary-query <statement> |
边界查询,也就是在导入前先通过SQL查询得到一个结果集,然后导入的数据就是该结果集内的数据,格式如:--boundary-query 'select id,no from t where id = 3',表示导入的数据为id=3的记录,或者 select min(<split-by>), max(<split-by>) from <table name>,注意查询的字段中不能有数据类型为字符串的字段,否则会报错 |
--columns<col,col> |
指定要导入的字段值,格式如:--columns id,username |
--direct |
直接导入模式,使用的是关系数据库自带的导入导出工具。官网上是说这样导入会更快 |
--direct-split-size |
在使用上面direct直接导入的基础上,对导入的流按字节数分块,特别是使用直连模式从PostgreSQL导入数据的时候,可以将一个到达设定大小的文件分为几个独立的文件。 |
--inline-lob-limit |
设定大对象数据类型的最大值 |
-m,--num-mappers |
启动N个map来并行导入数据,默认是4个,最好不要将数字设置为高于集群的节点数 |
--query,-e <sql> |
从查询结果中导入数据,该参数使用时必须指定–target-dir、–hive-table,在查询语句中一定要有where条件且在where条件中需要包含 \$CONDITIONS,示例:--query 'select * from t where \$CONDITIONS ' --target-dir /tmp/t –hive-table t |
--split-by <column> |
表的列名,用来切分工作单元,一般后面跟主键ID |
--table <table-name> |
关系数据库表名,数据从该表中获取 |
--delete-target-dir |
删除目标目录 |
--target-dir <dir> |
指定hdfs路径 |
--warehouse-dir <dir> |
与 --target-dir 不能同时使用,指定数据导入的存放目录,适用于hdfs导入,不适合导入hive目录 |
--where |
从关系数据库导入数据时的查询条件,示例:--where "id = 2" |
-z,--compress |
压缩参数,默认情况下数据是没被压缩的,通过该参数可以使用gzip压缩算法对数据进行压缩,适用于SequenceFile, text文本文件, 和Avro文件 |
--compression-codec |
Hadoop压缩编码,默认是gzip |
--null-string <null-string> |
可选参数,如果没有指定,则字符串null将被使用 |
--null-non-string <null-string> |
可选参数,如果没有指定,则字符串null将被使用| |
2.3 创建 hive 表
Eg:
sqoop
create-hive-table
--connect jdbc:mysql://192.168.56.121:3306/metastore
--username hiveuser
--password redhat
--table TBLS
参数 |
说明 |
--hive-home <dir> |
Hive的安装目录,可以通过该参数覆盖掉默认的hive目录 |
--hive-overwrite |
覆盖掉在hive表中已经存在的数据 |
--create-hive-table |
默认是false,如果目标表已经存在了,那么创建任务会失败 |
--hive-table |
后面接要创建的hive表 |
--table |
指定关系数据库表名 |
导入数据到 hive
执行下面的命令会将 mysql 中的数据导入到 hdfs 中,然后创建一个hive 表,最后再将 hdfs 上的文件移动到 hive 表的目录下面。
sqoop import
--connect jdbc:mysql://192.168.56.121:3306/metastore
--username hiveuser --password redhat
--table TBLS
--fields-terminated-by
"\t"
--lines-terminated-by
"\n"
--hive-import
--hive-overwrite
--create-hive-table
--hive-table dw_srclog.TBLS
--delete-target-dir
具体可以参照:https://segmentfault.com/a/1190000002532293
关于sqoop的导出使用从hive中导出到mysql:
Sqoop export
--connect jdbc:mysql://xxxxxx:3306/bbg_real_data?characterEncoding=utf-8
--username root #表示数据库用户名
--password root #表示数据库密码
--table deal_data #表示数据表名
--hcatalog-database default #hive中的数据库名
--hcatalog-table deal_bbg_data_2 #表示hive中的表名
注意导出的时候,mysql的字段名要和hive里面的字段名一样,这样才能对应的导入和导出。字段类型也要一样,我全部都是varchar(40)。
Mysql表明和字段名不能是关键字例如:all等等
Hive tutorrials
- Create schema/table
Create schema[table] schema_name/table_name
- Delete schema/table
Drop database[table] if exists database_name[table_name]
Detail please look at as follow:
http://www.yiibai.com/hive/hive_drop_table.html
Sqoop 导入数据到hdfs和hive总结相关推荐
- sqoop从mysql导入hdfs_sqoop 从mysql导入数据到hdfs、hive
1.上传sqoop安装包 2.安装和配置 在添加sqoop到环境变量 将数据库连接驱动拷贝到$SQOOP_HOME/lib里 3.使用 第一类:数据库中的数据导入到HDFS上 sqoop import ...
- sqoop从mysql导入hdfs_3.使用sqoop从mysql 导入数据到hdfs
使用sqoop从mysql 导入数据到hdfs 注意: 需要将mysql的jdbc驱动包放到lib目录下 在conf目录中,执行 cp sqoop-env-template.sh sqoop-env. ...
- sqoop动态分区导入mysql,sqoop 导入数据到hive分区表(外表,内表) 指定分区 指定数据库 指定表...
sqoop 导入数据到hive 1.1.导入数据到hive分区表(内表),指定分区 创建hive分区表 –hive-database 指定数据库 –table 指定表 –hive-overwrite ...
- sqoop导入数据(保持一致性)--staging-table
sqoop导入数据(保持一致性)–staging-table sqoop import参数 –query "select XXXXX and $CONDITIONS " 按条件导入 ...
- Sqoop导入数据发生数据倾斜问题 及更好解决
Sqoop导入数据发生数据倾斜问题 及更好解决 一:问题 在生产环境中,由于数据是庞大的,且是复杂的 Sqoop抽数使用单实例报内存溢出以及抽数时间过长,决定采用sqoop的多实例并行抽数 官网:ht ...
- 使用Sqoop1将MySQL 导入数据到 HDFS
本篇文章主要介绍使用Sqoop1将MySQL 导入数据到 HDFS. 说明: 1.Sqoop 与数据库进行通信,获取数据库表的元数据信息 2.Sqoop启动一个Map-Only的MapReduce作业 ...
- sqoop导入数据常见问题解决方法
sqoop导入数据常见问题解决方法 参考文章: (1)sqoop导入数据常见问题解决方法 (2)https://www.cnblogs.com/chaojibaidu/p/11071132.html ...
- Sqoop导入数据--split by 和 --m(大于1)配合使用
Sqoop导入数据–split by 和 --m(大于1)配合使用 split-by 根据不同的参数类型有不同的切分方法: 如int型,Sqoop会取最大和最小split-by字段值,然后根据传入的n ...
- Sqoop快速入门【导入数据到HDFS与导出数据到数据库】
1.Sqoop概述 Sqoop - "SQL到Hadoop和Hadoop到SQL" sqoop是apache旗下一款"Hadoop和关系数据库服务器之间传送数据" ...
最新文章
- mac git使用与配置踩过的坑
- 深入探讨Varnish缓存命中率
- 中科大博士20万字正经论文:教你如何给女朋友送礼物
- Xamarin.Forms中使用LiteDB分页
- spring事务管理-注解配置aop事务(重点)
- C/C++中的占位符
- openHEVC在Windows下构建vs32/64位工程(vs2013)
- Axis1.x WebService开发指南—目录索引
- 卡巴斯基2014激活码授权文件KEY
- Python根据歌曲id爬取网易云音乐歌词
- 如何批量压缩pdf文件大小?
- Excel数字小写金额转换汉字大写金额公式的简单设置
- 植物大战僵尸_修改存档和金钱
- 【论文翻译】Occluded Prohibited Items Detection
- 大学android五子棋课程目的,拓展性课程(五子棋)教案.pdf
- 【大数据分析毕设之基于python爬虫的旅游大数据分析可视化系统】
- 极佳mysql修复数据库修复_极佳SQL数据库修复工具下载
- 【特产百科】台湾炭焙乌龙茶的功效
- 流水线生产流程与批量生产流程的优缺点
- 2021年煤矿采煤机(掘进机)操作考试技巧及煤矿采煤机(掘进机)操作复审考试
热门文章
- P8400 [CCC 2022 J1] Cupcake Party
- s=a+bb+ccc+dddd+….的值 python
- 服务器网站显示1004报错,失败:错误域= NSURLErrorDomain代码= -1004“无法连接到服务器。”...
- 爱上博客--个人随想
- 提高网速软件_直播软件这样开发,确实独树一帜
- NFVA35065L32 IGBT 650V 汽车智能功率模块 (ASPM) 特征
- 猫狗大战(kaggle竞赛-猫狗图像分类)
- matlab鱼群仿真程序,人工鱼群算法的仿真程序-matlab
- SLO 落地方案:VALET
- 浅析网站的基本构成和主要类型