当前位置: 首页 > news >正文

数仓工具:datax

datax可以理解为sqoop的优化版,

速度比sqoop

因为sqoop底层是map任务,而datax底层是基于内存

DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能

datax 是让你编写 json

flume 是让你编写 conf

azkaban 是让你编写 flow

sqoop 是让你写命令

将mysql中的数据导入到hdfs上

{"job": {"setting": {"speed": {"channel": 1}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","connection": [{"querySql": ["select empno,ename,job,hiredate,sal from emp;"],"jdbcUrl": ["jdbc:mysql://bigdata01:3306/sqoop"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://bigdata01:9820","path": "/datax/emp","fileName": "emp","column": [{"name": "empno", "type": "int"},{"name": "ename", "type": "string"},{"name": "job", "type": "string"},{"name": "hiredate", "type": "string"},{"name": "sal", "type": "double"}],"fileType": "text","writeMode": "append","fieldDelimiter": "\t"}}}]}
}

将hdfs上的数据导入到mysql中

{"job": {"setting": {"speed": {"channel": 1}},"content": [{"reader": {"name": "hdfsreader","parameter": {"path": "/datax/emp/*","defaultFS": "hdfs://bigdata01:9820","column":[ {"index": 0, "type": "string"},{"index": 1, "type": "string"},{"index": 2, "type": "string"},{"index": 3, "type": "string"},{"index": 4, "type": "string"}],"fileType": "text","encoding": "UTF-8","fieldDelimiter": "\t"}},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "replace","username": "root","password": "123456","column": ["empno", "ename", "job", "hiredate", "sal"],"connection": [{"jdbcUrl": "jdbc:mysql://bigdata01:3306/sqoop","table": ["eemmpp"]}]}}}]}
}

使用注意

注意点:

1)指定字段的类型时,datax中的类型只有下面几种,而不是像java一样的

2)默认的分隔符,即 "fieldDelimiter": "xxx" 不指定或者不写的时候,默认为 ' , ' 分割

3)

将mysql 中的数据导入hive(重要)*

说是把mysql中的数据导入hive,其实本质还是将mysql中的数据导入hdfs中

首先先创建一个hive表 指定到hdfs的路径上,再将mysql中的数据导入到这个路径即可

1)首先先创建一个hive表
 

reate external table if not exists ods_01_base_area ( id int COMMENT 'id标识', area_code string COMMENT '省份编码', province_name string COMMENT '省份名称', iso string COMMENT 'ISO编码' )row format delimited fields terminated by ',' stored as TextFile location '/data/nshop/ods/ods_01_base_area/'; -- 指定到hdfs的路径

2)将mysql的数据通过datax导入hdfs

注意指定路径和分隔符 ! 一定要与创建hive表指定的路径一致 且 分隔符也保持一致

{"job": {"setting": {"speed": {"channel": 1}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","area_code","province_name","iso"],"splitPk": "id","connection": [{"table": ["base_area"],"jdbcUrl": ["jdbc:mysql://bigdata01:3306/datax"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://bigdata01:9820","path": "/data/nshop/ods/ods_01_base_area/","fileName": "base_area","column": [{"name": "id","type": "int"},{"name": "area_code","type": "string"},{"name": "province_name","type": "string"},{"name": "iso","type": "string"}],"fileType": "text","writeMode": "append","fieldDelimiter": ","}}}]}
}
3) 导入完成,此时hive表中就有了数据

http://www.lryc.cn/news/441352.html

相关文章:

  • CSS传统布局方法(补充)——WEB开发系列37
  • 【系统架构设计师】软件架构的风格(经典习题)
  • 网页打开时,下载的文件fetcht类型?有什么作用?
  • 作为HR,如何考察候选人的专业知识与技能
  • 阻止冒泡事件
  • 聊聊Netty对于内存方面的优化
  • 2024年轻人驯化AI指南
  • 算法:双指针题目练习
  • 傅里叶变换的基本性质和有关定理
  • VIM使用技巧
  • C语言进阶【4】---数据在内存中的存储【1】(你不想知道数据是怎样存储的吗?)
  • 【mysql面试题】mysql复习之常见面试题(一)
  • VB.NET中如何利用ASP.NET进行Web开发
  • vue2+js项目升级vue3项目流程
  • 做EDM邮件群发营销时如何跟进外贸客户?
  • 【Java经典游戏】-01-是男人就坚持30秒
  • 微调框QSpinBox
  • 在线查看 Android 系统源代码 AOSPXRef and AndroidXRef
  • JavaScript substr() 方法
  • 教你把图片转换为炫酷的翻页电子杂志
  • 生信软件35 - AI代码编辑器Cursor
  • Vue Router 编程式导航全攻略:深入掌握 push, replace, go, back, forward,beforeEach 方法
  • 切换淘宝最新镜像源:优化NPM包管理的极致体验
  • react 基础语法
  • k8s的NodeIP、PodIP、ClusterIP、ExternalIP
  • 【vue element-ui】关于删除按钮的提示框,可一键复制
  • 内部工具使用
  • Spring Boot-静态资源管理问题
  • 白酒与商务宴请:如何成为餐桌上的受宠者之一?
  • 【C语言零基础入门篇 - 9】:文件操作