小区服务网站怎么做,咸阳做网站排名,专门做海产品的网站,新东方在线教育平台官网在实际使用Datax的时候#xff0c;比较常用的是同步业务数据#xff08;mysql中的数据#xff09;到HDFS来实现数仓的创建#xff0c;那么怎么实现呢#xff1f;我们一步步来实现#xff08;基于Datax 3.0.0#xff09;
1、检查环境#xff0c;需要安装完一个Datax比较常用的是同步业务数据mysql中的数据到HDFS来实现数仓的创建那么怎么实现呢我们一步步来实现基于Datax 3.0.0
1、检查环境需要安装完一个Datax一个mysql安装hadoop以及hive
2、在mysql中创建源表并在原表中插入数据我们的目标是把源表的mysql数据同步到HDFS中我们当前测试表如下 源数据库test 源表结构 CREATE TABLE test ( id bigint(20) NOT NULL AUTO_INCREMENT, name varchar(100) DEFAULT NULL, score decimal(10,0) DEFAULT NULL, update_time datetime NOT NULL, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT3 DEFAULT CHARSETutf8 插入数据如下 3、在datax同步之前需要在hive上创建数据库和表否则会报错创建语句如下注意分隔符用\001用来避免数据中含有分隔符ORC是最后存储hive的格式我们创建表的时候也要是ORC格式目前datax插入HDFS只支持用户配置为text或orc。 create database test CREATE TABLE IF NOT EXISTS test.test(id int comment 主键,name string comment 名称, score double comment fen , update_time string comment time) COMMENT Employee details ROW FORMAT DELIMITED FIELDS TERMINATED BY \001 LINES TERMINATED BY \n STORED AS ORC ; 4、我们在安装Datax的服务器上创建json文件我们文件创建在/opt/datax/job目录下开发者可自定义保存文件路径 vim mysql2hdfs.json 文件内容如下需要修改的或者重要的已标红大家直接修改即可 { job: { content: [ { reader: { name: mysqlreader, parameter: { username: root, password: root, connection: [ { querySql: [ select id,name,score,update_time from test; ], jdbcUrl: [ jdbc:mysql://node01:3306/datax ] } ] } }, writer: { name: hdfswriter, parameter: { column: [ { name: id, type: bigint }, { name: name, type: string }, { name: score, type: double }, { name: update_time, type: string } ], defaultFS: hdfs://node01:8020, fieldDelimiter: ,, fileName: test, fileType: orc, path: /user/hive/warehouse/test.db/test, writeMode: append } } } ], setting: { speed: { channel: 1 } } } } 注意类型如下 标红解释如下 jdbcUrl数据库的jdbcurl链接 usernamemysql用户名 passwordmysql用户登陆密码 querySqlmysqlreader中的参数用作自定义sql根据sql的灵活编写实现数据的增量、全量、特定列数据的同步注意需要sql和mysqlwriter中的column字段数量、名称、类型需要对应上 defaultFSHadoop hdfs文件系统namenode节点地址。格式hdfs://ip:端口例如hdfs://127.0.0.1:9000 fieldDelimiterhdfswriter写入时的字段分隔符 fileName:HdfsWriter写入时的文件名实际执行时会在该文件名后添加随机的后缀作为每个线程写入实际文件名fileType:文件的类型目前只支持用户配置为text或orcpath:存储到Hadoop hdfs文件系统的路径信息HdfsWriter会根据并发配置在Path目录下写入多个文件。为与hive表关联请填写hive表在hdfs上的存储路径。例Hive上设置的数据仓库的存储路径为/user/hive/warehouse/ 已建立数据库test表hello则对应的存储路径为/user/hive/warehouse/test.db/hellowriteMode:hdfswriter写入前数据清理处理模式有以下3种 1 append写入前不做任何处理DataX hdfswriter直接使用filename写入并保证文件名不冲突。 2nonConflict如果目录下有fileName前缀的文件直接报错。 3truncate如果目录下有fileName前缀的文件先删除后写入。 5、执行Datax首先去到Datax的bin目录然后执行 python /opt/datax/bin/datax.py /opt/datax/job/mysql2hdfs.json 6、看到如下则证明执行成功 7、在hive种查询数据