![9386f385c19072b8071e52a361795300.png](https://i-blog.csdnimg.cn/blog_migrate/98a9bff5c2df1432a967f429b46933d1.jpeg)
Sqoop 导出脚本
1)编写 Sqoop 导出脚本
在/home/atguigu/bin 目录下创建脚本 sqoop_export.sh
[atguigu@hadoop102 bin]$ vim sqoop_export.sh
在脚本中填写如下内容
#!/bin/bash
hive_db_name=gmall
mysql_db_name=gmall_report
export_data() {
/opt/module/sqoop/bin/sqoop export
--connect
"jdbc:mysql://hadoop102:3306/${mysql_db_name}?useUnicode=true&
characterEncoding=utf-8"
--username root
--password 000000
--table $1
--num-mappers 1
--export-dir /warehouse/$hive_db_name/ads/$1
--input-fields-terminated-by "t"
--update-mode allowinsert
--update-key $2
--input-null-string 'N'
--input-null-non-string 'N'
}
case $1 in
"ads_uv_count")
export_data "ads_uv_count" "dt"
;;
"ads_user_action_convert_day")
export_data "ads_user_action_convert_day" "dt"
;;
"ads_user_topic")
export_data "ads_user_topic" "dt"
;;
"all")
export_data "ads_uv_count" "dt"
export_data "ads_user_action_convert_day" "dt"
export_data "ads_user_topic" "dt"
;;
esac
关于导出 update 还是 insert 的问题
--update-mode:
updateonly 只更新,无法插入新数据
allowinsert 允许新增
--update-key:允许更新的情况下,指定哪些字段匹配视为同一条数据,进行更新
而不增加。多个字段用逗号分隔。
--input-null-string 和--input-null-non-string:
分别表示,将字符串列和非字符串列的空串和“null”转义。
官网地址:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html
Sqoop will by default import NULL values as string null. Hive is
however using string N to denote NULL values and therefore
predicates dealing with NULL(like IS NULL) will not work correctly.
You should append
parameters --null-string and --null-non-string in case of import
job or --input-null-string and --input-null-non-string in case
of an export job if you wish to properly preserve NULL values.
Because sqoop is using those parameters in generated code, you need
to properly escape value N to N:
Hive 中的 Null 在底层是以“N”来存储,而 MySQL 中的 Null 在底层就是 Null,
为 了 保 证 数 据 两 端 的 一 致 性 。 在 导 出 数 据 时 采 用 --input-null-string 和
--input-null-non-string 两个参数。导入数据时采用--null-string 和--null-non-string。
3)执行 Sqoop 导出脚本
[atguigu@hadoop102 bin]$ chmod 777 sqoop_export.sh
[atguigu@hadoop102 bin]$ sqoop_export.sh all
8.4 会员主题指标获取的全调度流程
job 文件
gmall.zip
(1)mysql_to_hdfs.job
type=command
command=/home/atguigu/bin/mysql_to_hdfs.sh all ${dt}
(2)hdfs_to_ods_log.job
type=command
command=/home/atguigu/bin/hdfs_to_ods_log.sh ${dt}
(3)hdfs_to_ods_db.job
type=command
command=/home/atguigu/bin/hdfs_to_ods_db.sh all ${dt}
dependencies=mysql_to_hdfs
(4)ods_to_dwd_start_log.job
type=command
command=/home/atguigu/bin/ods_to_dwd_start_log.sh ${dt}
dependencies=hdfs_to_ods_log
(5)ods_to_dwd_db.job
type=command
command=/home/atguigu/bin/ods_to_dwd_db.sh ${dt}
dependencies=hdfs_to_ods_db
(6)dwd_to_dws.job
type=command
command=/home/atguigu/bin/dwd_to_dws.sh ${dt}
dependencies=ods_to_dwd_db,ods_to_dwd_start_log
(7)dws_to_dwt.job
type=command
command=/home/atguigu/bin/dws_to_dwt.sh ${dt}
dependencies=dwd_to_dws
(8)dwt_to_ads.job
type=command
command=/home/atguigu/bin/dwt_to_ads.sh ${dt}
dependencies=dws_to_dwt
(9)hdfs_to_mysql.job
type=command
command=/home/atguigu/bin/hdfs_to_mysql.sh ads_user_topic
dependencies=dwt_to_ads