金融数据分析案例第五篇《sqoop初步学习》

此系列文章是《数据蛙三个月就业班》股票数据分析案例的总结,整个案例包括linux、shell、python、hive、pycharm、git、html、css、flask、pyechart、sqoop等的使用,为了让就业班同学能够更好的学习,所以对上面大家有疑问的内容进行了总结。本篇是股票数据分析案例第四篇总结---sqoop初步学习
阅读目录:

  • sqoop介绍
  • sqoop从mysql抽取数据到hive
  • sqoop从hive抽取数据到mysql
一:sqoop介绍

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。导入图:


金融数据分析案例第五篇《sqoop初步学习》_第1张图片
sqoop
二:sqoop从mysql抽取数据到hive

1.把stockdata库stock_basics_data表中数据抽取到hive

金融数据分析案例第五篇《sqoop初步学习》_第2张图片
image.png

2.全量抽取stock_basics_data表中数据

sqoop import \
--hive-import \
--connect "jdbc:mysql://localhost/stockdata?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&dontTrackOpenResources=true&defaultFetchSize=50000&useCursorFetch=true" \
--driver com.mysql.jdbc.Driver \
--username root \   mysql 用户名
--password **** \   mysql密码
--table stock_basics_data \
--columns ts_code,symbol,name,area,industry,fullname,market,exchange,curr_type,list_status,list_date,is_hs \
--fetch-size 50000 \     每次批量抽取5000条
--hive-table ods.datafrog_test \  hive 中的表名
--hive-drop-import-delims \  
--fields-terminated-by '\001' \
--delete-target-dir \     删除hive 路径
--target-dir /user/hadoop/sqoop/datafrog_test \  建立hive 路径
-m 1

3.部分抽取stock_basics_data表中数据

export HADOOP_USER_NAME=hdfs
sqoop import \
--hive-import \
--connect "jdbc:mysql://localhost/stockdata?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false" \
--driver com.mysql.jdbc.Driver \
--username root \     mysql 用户名
--password **** \   mysql密码
--query \
"SELECT ts_code,symbol,name,area,industry,fullname,market,exchange,curr_type,list_status,list_date,is_hs from stockdata.stock_basics_data where "'$CONDITIONS'" and name='平安银行'" \   查询平安银行基本股票数据
--fields-terminated-by '\t' \       '\t'作为字段分隔符
--fetch-size 50000 \                  每次批量抽取5000条
--hive-table ods.datafrog_test \        hive 中的表名
--delete-target-dir \                   删除hive 路径
--target-dir /user/hadoop/sqoop/datafrog_test \  建立hive 路径
-m 1
三:sqoop从hive抽取数据到mysql

1.从hive 中抽取数据到mysql时候,首先在mysql中建表
表原来是建好了的,就是不重复来建立了,大家一起来看下建表字段

金融数据分析案例第五篇《sqoop初步学习》_第3张图片
image.png

2.开始进行数据抽取

sqoop export \
--connect "jdbc:mysql://localhost/ods?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false" \
--username root \
--password ****** \
--table stock_basics_data \
--export-dir /user/hive/warehouse/ods.db/ods_stock_basics \
--columns ts_code,symbol,name,area,industry,fullname,market,exchanges,curr_type,list_status,list_date,is_hs \
--update-mode allowinsert \
--update-key agent_id \
--fields-terminated-by ',' \
--lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N'

为了演示,我们就先不写入到shell脚本中了,直接复制到linux系统中运行就好了,如下图:

金融数据分析案例第五篇《sqoop初步学习》_第4张图片
export

最后我们来看下存储到mysql中的数据


金融数据分析案例第五篇《sqoop初步学习》_第5张图片
data

3.参数解释

sqoop export \
--connect "jdbc:mysql://localhost/ods?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false" \    localhost 可以换成自己的mysql数据库ip,ods是mysql数据库名字,其他是固定格式
--username root \                mysql数据库账号
--password ****** \              mysql数据库密码
--table stock_basics_data \      mysql中的表名字
--export-dir /user/hive/warehouse/ods.db/ods_stock_basics \   hive中的表地址,大家改成 /user/hive/warehouse/抽取hive数据库名.db/hive数据表
--columns ts_code,symbol,name,area,industry,fullname,market,exchanges,curr_type,list_status,list_date,is_hs \   抽取的hive表中的字段
--update-mode allowinsert \   更新模式,允许插入
--update-key agent_id \          后面接条件列名,通过该参数,可以将关系数据库中已经存在的数据进行更新操作,类似于关系数据库中的update操作,并且agent_id是mysql表中的主键
--fields-terminated-by ',' \      字段之间的分隔符
--lines-terminated-by '\n' \    设定每条记录行之间的分隔符,默认是换行
--input-null-string '\\N' \    string类型的列如果null,替换为指定字符串
--input-null-non-string '\\N'   非string类型的列如果null,替换为指定字符串
四:课后学习资料

1.sqoop参考教程
2.sqoop更新、增量、全量导出
3.sqoop参数

你可能感兴趣的:(金融数据分析案例第五篇《sqoop初步学习》)