网站首页 > 技术文章 正文
订单管理
架构:
sqoop
Sqoop(发音:skup)是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
配置:
1、hadoop的必须有系统配置
2、放驱动到lib目录下
3、建立选项文件
DBMS to HDFS
eg/user.conf
执行:
启动hdfs start-dfs.sh
导入命令:
cd /usr/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/
bin/sqoop --options-file eg/user.conf
DBMS to HIVE
eg/test2
# target-dir可以看做一个临时目录,先导入hdfs的文件中临时文件,再导入hive
目录名和--hive-table要不一样
执行:
注意:hive所在的机器和sqoop必须在同一台机器
启动hive start-hive.sh 启动hive之前记得启动与之关联的数据库
cd /usr/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/
bin/sqoop --options-file eg/test2.conf
DBMS to Hbase
hdfs to DBMS
注意:导出只能从hdfs到关系型数据库
hive和hbase同步
帮助文档:
1、 把hive-hbase-handler-1.2.1.jar cp到hbase/lib 下
有hbase配置的集群都需要复制
cp/usr/apache-hive-1.2.1-bin/lib/hive-hbase-handler-1.2.1.jar /usr/hbase-0.98.12.1-hadoop2/lib/
scp/usr/apache-hive-1.2.1-bin/lib/hive-hbase-handler-1.2.1.jar root@node3:/usr/hbase-0.98.12.1-hadoop2/lib/
2、同时把hbase中的所有的jar,cp到hive/lib
注意:同名的jar包不要覆盖!
cp /usr/hbase-0.98.12.1-hadoop2/lib/* /usr/apache-hive-1.2.1-bin/lib/
3、 在hive的配置文件增加属性:
vi /usr/apache-hive-1.2.1-bin/conf/hive-site.xml
4、 在hive中创建临时表
--中间表第一个字段名字为key(必须)
CREATE TABLE tmp_order2 (key string,id string,user_id string,order_amount double,order_statusint,order_create_timetimestamp)STOREDBY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITHSERDEPROPERTIES("hbase.columns.mapping" ":key,order:order_id,order:user_id,order:order_amount,order:order_status,order:order_create_time")
TBLPROPERTIES ("hbase.table.name" = "t_order");
测试:在hbase中会自动创建t_order表,在表中已经建立了映射的列中插入数据,在hive中的tmp_order2中就可以查到(没有建立映射的列不能查到)
hive--- > hbase
将hive中其他表的数据导入到hive和hbase建立的映射的表中,就可以实现将hive中的数据导入到hbase中
ETL 数据仓库技术
涉及各种数据的导出和导入
不同的工具适合不同的项目
抽取----转换----导入
sqoop的使用
----sqoop是一个用来在hadoop体系和关系型数据库之间进行数据互导的工具
----实质就是将导入导出命令转换成mapreduce程序来实现
sqoop安装:安装在一台节点上就可以了。
1.上传sqoop
2.安装和配置
----修改配置文件 sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop-2.4.1
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop/app/hadoop-2.4.1
#set the path to where bin/hbase is available
export HBASE_HOME=/home/hadoop/app/hbase-0.96.2-hadoop2
#Set the path to where bin/hive is available
export HIVE_HOME=/home/hadoop/app/hive-0.12.0-bin
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/home/hadoop/app/zookeeper-3.4.5/conf
再添加sqoop到环境变量
######将数据库连接驱动拷贝到$SQOOP_HOME/lib里
3.使用
第一类:数据库中的数据导入到HDFS上
sqoop import
--connect jdbc:mysql://192.168.1.10:3306/itcast
--username root --password 123
--table trade_detail
--columns 'id, account, income, expenses'
指定输出路径、指定数据分隔符
sqoop import
--connect jdbc:mysql://192.168.1.10:3306/itcast
--username root --password 123
##要导入数据的表
--table trade_detail
##数据导入hdfs后所存放的目录
--target-dir '/sqoop/td'
##导入的数据字段之间的分隔符
--fields-terminated-by '\t'
指定Map数量 -m
sqoop import
--connect jdbc:mysql://192.168.1.10:3306/itcast
--username root --password 123
--table trade_detail
--target-dir '/sqoop/td1'
--fields-terminated-by '\t'
##指定做导入处理时的map 任务数
-m 2
增加where条件, 注意:条件必须用引号引起来
sqoop import
--connect jdbc:mysql://192.168.1.10:3306/itcast
--username root --password 123
--table trade_detail
--where 'id>3'
--target-dir '/sqoop/td2'
增加query语句(使用 \ 将语句换行)
sqoop import
--connect jdbc:mysql://192.168.1.10:3306/itcast
--username root --password 123
--query 'SELECT * FROM trade_detail where id > 2 AND $CONDITIONS'
--split-by trade_detail.id
--target-dir '/sqoop/td3'
注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND $CONDITIONS这个参数必须加上
而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上\即\$CONDITIONS
如果设置map数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上
第二类:将HDFS上的文件数据导出到数据库的表里面去
sqoop export
--connect jdbc:mysql://192.168.8.120:3306/itcast
--username root --password 123
##你要导出的数据所在的目录
--export-dir '/td3'
##你要导往的目标关系表
--table td_bak
-m 1
##你要导出的文件的字段分隔符
--fields-termianted-by '\t'
4.配置mysql远程连接
GRANT ALL PRIVILEGES ON itcast.* TO 'root'@'192.168.1.201' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES
例子:mysql--- >> hdfs
hdfs--- >>mysql
mysql-- >> hive
创建表
导入数据
猜你喜欢
- 2025-08-26 升级JDK17的理由,核心是降低GC时间
- 2024-11-04 Dockerfile 命令详解 dockerfile常用命令
- 2024-11-04 运维日记|那些年你可能会踩的坑—xtts篇
- 2024-11-04 oracle数据库访问控制配置(白名单)
- 2024-11-04 深入浅出!十三张图带你从源码了解SpringBoot启动流程!实战篇
- 2024-11-04 linux操作命令随笔 linux系统的操作命令
- 2024-11-04 Jenkins安装配置,项目发布、管理详解,史上最清晰,值得收藏!
- 2024-11-04 0034 使用table表格标签进行网页排版
- 2024-11-04 Java课程设计报告+源码-万年历的设计与实现
- 2024-11-04 Java 8之后的那些新特性(二):文本块 Text Blocks
你 发表评论:
欢迎- 最近发表
-
- 用AI做微信小程序的完整步骤_如何用ai制作微信表情包
- 自习室预约的微信小程序设计与实现-计算机毕业设计源码+LW文档
- 微信小程序开发入门指南_微信小程序开发入门教程
- 写字机器人好用吗? 组装就花了5个小时 还要学习软件、录入字体
- 白描网页版 - 高效准确且免费的OCR文字识别工具
- 字体图形面板与图标字体使用_字体图标的优势和劣势
- 作为前端工程师必须懂得的33个CSS核心概念
- Flutter程序员开发炫酷的登录页面 字体库运用 路由学习 源码分享
- 2025Q3开源字体盘点:让你的代码和文档'颜值'飙升!
- Agent杂谈:Agent的能力上下限及「Agent构建」核心技术栈调研分享~
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)