137.如何进行离线计算-3

137.1 数据导出

  • Sqoop可以对HDFS文件进行导入导出到关系型数据库
  • Sqoop 工作机制是将导入或导出命令翻译成 mapreduce 程序来实现。
  • 在翻译出的 mapreduce 中主要是对 inputformat 和 outputformat 进行定制
    sqoop实际生产环境中 关于mysql地址 尽量不要使用: localhost 可用ip或者域名代替
  • 导入
    • mysql----->hdfs 导入的文件分隔符为逗号
    • mysql----->hive
      • 需要先复制表结构到hive 再向表中导入数据
      • 导入的文件分隔符为 ‘\001’
      • sqoop中增量导入的判断是通过上次导入到某个列的某个值来标识 的,这个值由用户自己维护,一般企业中选择不重复且自增长的主键最多,自增长的时间也可以。
# 导入mysql表到hdfs

bin/sqoop import \
--connect jdbc:mysql://node-1:3306/userdb \
--username root \
--password 123 \
--target-dir /sqoopresult \
--table emp --m 1

# 支持条件导入数据

bin/sqoop import \
--connect jdbc:mysql://node-1:3306/userdb \
--username root \
--password 123 \
--where "id > 1202" \
--target-dir /sqoopresult/t1 \
--table emp --m 1

# 将关系型数据的表结构复制到hive中

bin/sqoop create-hive-table \
--connect jdbc:mysql://node-1:3306/userdb \
--table emp_add \
--username root \
--password 123 \
--hive-table default.emp_add_sp

# 从关系数据库导入文件到hive中

bin/sqoop import \
--connect jdbc:mysql://node-1:3306/userdb \
--username root \
--password 123 \
--table emp_add \
--hive-table default.emp_add_sp \
--hive-import \
--m 1

# 增量导入

bin/sqoop import \
--connect jdbc:mysql://node-1:3306/userdb \
--username root \
--password 123 \
--table emp_add  \
--target-dir '/user/hive/warehouse/emp_add_sp' \
--incremental append \
--check-column id \
--last-value 1205 \
--fields-terminated-by '\001' \
--m 1
  • 导出
    • hdfs导出到mysql
      • 要先在mysql中手动创建对应的表结构
 # hdfs文件导出到mysql
 
 bin/sqoop export \
 --connect jdbc:mysql://node-1:3306/userdb \
 --username root \
 --password 123 \
 --table employee \
 --export-dir /hivedata/employee.txt \
 --fields-terminated-by '\001'

137.2 工作流调度

  • azkaban工作流程
    • 配置job文件(注意文件的第一行头信息)
    • 把job配置连同其他资源一起打成.zip压缩包
    • 页面上创建工程project
    • 上传.zip压缩包
    • execute/schedule

大数据视频推荐:
CSDN
人工智能算法竞赛实战
AIops智能运维机器学习算法实战
ELK7 stack开发运维实战
PySpark机器学习从入门到精通
AIOps智能运维实战
腾讯课堂
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

你可能感兴趣的:(Hadoop,hive,hadoop,大数据)