sqoop 是进出hadoop的重要工具。
用sqoop从RDBMS中导入数据
sqoop import \
-D oozie.job.id=$wf_job_id \ -- 自定义参数 oozie 相关
-D mapred.job.queue.name=$mapred_job_queue_name \ -- 自定义参数 oozie 相关
--connect $data_db_url \ --RDMS jdbc地址
--username $data_db_username \ -RDBMS用户名
--password $data_db_password \ -RDBMS密码
--table $db_table \ -- RDBMS 表名
--columns $db_columns \ --导入字段,及其顺序
--verbose \
--target-dir $hdfs_target_dir \ ---HDFS目标文件夹
--fields-terminated-by '\001' \ ---字段分隔字符
--lines-terminated-by '\n' \ --- 行分隔字符
--hive-table $data_db_name.$hive_table \ --- hive表名
-m $parallel_count \ ---使用并发
--hive-import \ -- 使用hive开关
--hive-overwrite \ -- 是否覆盖写
--null-string '\\N' \ --空字段表示
--null-non-string '\\N' \
--hive-drop-import-delims
用sqoop 从 hadoop向RDBMS推送数据
使用 insert overwrite directory OOOO select * from XXXX; 将表XXXX 转换格式并导入HDFS中,准备推送
sqoop export \
-D oozie.job.id=$wf_job_id \
-D mapred.job.queue.name=$mapred_job_queue_name \
-D mapred.task.timeout=0 \
--connect $data_db_url \
--username $data_db_username \
--password $data_db_password \
--table ${table_name}_insert \
--export-dir $insert_dir \ --目标文件夹
--columns $db_columns \ --输出字段顺序(用于数据对其,非常重要)
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--input-fields-terminated-by '\001' \ -- 字段隔离符号
-m ${parallel_count} \ 并发数量