我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ETL数据导入导出工具HData使用

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ETL数据导入导出工具HData使用

ETL数据导入导出工具HData使用

注:近期因朋友的请求协助了解Hdata工具的使用,抽空进行了摸索,特整理此文;该ETL数据交换工具开发者已经有三、四年没有更新维护记录了,不确定该项目是否会继续维护,因此选择该工具应用于项目时,请考虑后续的技术支持与问题处理等所需要的解决方案成本; 1、介绍(转载官方) HData是一个异构的ETL数据导入/导出工具,致力于使用一个工具解决不同数据源(JDBC、Hive、HDFS、HBase、MongoDB、FTP、Http、CSV、Excel、Kafka等)之间数据交换的问题。HData在设计上同时参考了开源的Sqoop、DataX,却与之有不同的实现。HData采用“框架+插件”的结构,具有较好的扩展性,框架相当于数据缓冲区,插件则为访问不同的数据源提供实现。 【HData特性】 1、异构数据源之间高速数据传输; 2、跨平台下独立运行; 3、数据传输过程全内存操作,不读写磁盘; 4、插件式扩展。   【HData设计】 配置文件:XML格式,配置Reader、Writer的参数(如:并行度、数据库连接地址、账号、密码等); Reader:数据读取模块,负责从数据源读取数据并写入RingBuffer; Splitter:根据配置文件中Reader的并行度构造相应数据的ReaderConfig对象供Reader使用,以实现数据的并行读取; RingBugffer:来自Disruptor的高性能环形数据缓冲区,基于事件监听模式的异步实现,采用无锁方式针对CPU缓存优化,在此用于Reader和Writer的数据交换; Writer:数据写入模块,负责从RingBuffer中读取数据并写入目标数据源。 HData框架通过配置读取解析、RingBugffer 缓冲区、线程池封装等技术,统一处理了数据传输中的基本问题,并提供Reader、Splitter、Writer插件接口,基于此可以方便地开发出各种插件,以满足各种数据源访问的需求。   【编译&运行】 编译 执行 mvn clean package -Pmake-package 命令,执行成功后将会生成压缩包 ./build/hdata.tar.gz ,然后解压即可。 编译时也可以夹带自己的配置, 如:mvn clean package -Pcdh5 -Pmake-package 运行 1、命令行配置方式

./bin/hdata --reader READER_NAME -Rk1=v1 -Rk2=v2 --writer WRITER_NAME -Wk1=v1 -Wk2=v2
READER_NAME、WRITER_NAME分别为读/写插件的名称,例如:jdbc、hive Reader插件的参数配置以-R为前缀,Writer插件的参数配置以-W为前缀。 例子(Mysql -> Hive):

 


./bin/hdata --reader jdbc -Rurl="jdbc:mysql://127.0.0.1:3306/testdb" -Rdriver="com.mysql.jdbc.Driver" -Rtable="testtable" -Rusername="username" -Rpassword="password" -Rparallelism=3 --writer hive -Wmetastore.uris="thrift://127.0.0.1:9083" -Whdfs.conf.path="/path/to/hdfs-site.xml" -Wdatabase="default" -Wtable="testtable" -Whadoop.user="hadoop" -Wparallelism=2
2、XML配置方式

job.xml




    
		jdbc:mysql://127.0.0.1:3306/testdb
		com.mysql.jdbc.Driver
		testtable
username password 3
thrift://127.0.0.1:9083 /path/to/hdfs-site.xml default testtable
hadoop 2
运行命令

./bin/hdata -f /path/to/job.xml
2、使用实战 【github下载】 https://github.com/uptonking/hdata   【编译环境】 jdk1.7(只能是1.7) maven 3+   【配置maven】 建议用独立setting.xml配置,不影响项目工程开发 hdata-settting.xml


 
  D:/apache-maven-3.5.4/repository
  
  
  
  
  	
		
      *
      mirror-all
      http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
      custom
  	
    
  
      
    
	   	
				jdk-1.7
				
					true
					1.7
				
				
					1.7
					1.7
					1.7
				
			 
	    
	        maven-home
	        
	            
	                central
	                https://repo1.maven.org/maven2
	                
	                    true
	                    warn
	                
	                
	                    false
	                
	            
	        
			    
			        
			            central
			            http://repo1.maven.org/maven2
			        
			    
			
	
注意:因为部份依赖包无法从中央仓库下载,aliyun镜像仓库也无法下载成功,因此配了多个mirror配置,那个能下载成功就用那个,多试几次,自已手动切换;

 

【执行打包】

mvn clean package -Pmake-package --settings D:apache-maven-3.5.4confhdata-settings.xml -Dmaven.test.skip=true
打包过程执行的有些久,因为要下载大量依赖包,稍等片刻,直到最后打包完成

....
....
.....
[INFO] Reading assembly descriptor: class="lazy" data-src/build/package.xml
[INFO] Building tar: D:Workspacesidea_2HData-masterassembly..uildhdata-0.2.8.tar.gz
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] HData 0.2.8 ........................................ SUCCESS [ 18.604 s]
[INFO] hdata-api .......................................... SUCCESS [ 14.069 s]
[INFO] hdata-core ......................................... SUCCESS [  4.442 s]
[INFO] hdata-console ...................................... SUCCESS [  0.234 s]
[INFO] hdata-csv .......................................... SUCCESS [  0.632 s]
[INFO] hdata-jdbc ......................................... SUCCESS [  1.343 s]
[INFO] hdata-ftp .......................................... SUCCESS [  0.753 s]
[INFO] hdata-http ......................................... SUCCESS [  0.234 s]
[INFO] hdata-kafka ........................................ SUCCESS [  6.452 s]
[INFO] hdata-hdfs ......................................... SUCCESS [ 20.008 s]
[INFO] hdata-hive ......................................... SUCCESS [ 30.733 s]
[INFO] hdata-hbase ........................................ SUCCESS [ 35.710 s]
[INFO] hdata-mongodb ...................................... SUCCESS [  3.634 s]
[INFO] hdata-excel ........................................ SUCCESS [ 14.700 s]
[INFO] hdata-wit .......................................... SUCCESS [  4.037 s]
[INFO] hdata-assembly 0.2.8 ............................... SUCCESS [ 17.239 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:53 min
[INFO] Finished at: 2020-06-16T12:12:33+08:00
[INFO] ------------------------------------------------------------------------
【查看目录结构】

D:Workspacesidea_2HData-master>dir
...
2020/06/16  12:12              .
2020/06/16  12:12              ..
2018/01/11  19:22                14 .gitignore
2020/06/16  15:45              .idea
2020/06/16  12:12              assembly
2020/06/15  13:49              bin
2020/06/16  14:06              build
2020/06/15  13:49              conf
2020/06/15  13:49              doc
2020/06/16  12:10              hdata-api
2020/06/16  12:10              hdata-console
2020/06/16  12:10              hdata-core
2020/06/16  12:10              hdata-csv
2020/06/16  12:12              hdata-excel
2020/06/16  12:10              hdata-ftp
2020/06/16  12:11              hdata-hbase
2020/06/16  12:10              hdata-hdfs
2020/06/16  12:11              hdata-hive
2020/06/16  12:10              hdata-http
2020/06/16  12:10              hdata-jdbc
2020/06/16  12:10              hdata-kafka
2020/06/16  12:11              hdata-mongodb
2020/06/16  12:12              hdata-wit
2020/06/15  13:52               574 hdata.iml
2020/06/16  11:44             5,337 pom.xml
2018/01/11  19:22            13,774 README.md
2020/06/16  12:10              target
...
多了一个build,即为编译后的目录,在该目录下有一个 hdata-0.2.8.tar.gz压缩文件,即打包后的可执行程序包;解压该包,进入到根目录即可执行命令;   【执行同步】hdata-0.2.8.tar.gz压缩文件解压,复制到D:/test/目录下。

D:	esthdata-0.2.8>dir
 ....
2020/06/16  16:06              .
2020/06/16  16:06              ..
2020/06/16  14:06              bin
2020/06/16  16:17              conf
2020/06/16  14:06              lib
2020/06/16  14:06              plugins
...
bin:存放hdata和hdata.bat脚本,分别用于linux和windows下运行的起始脚本; conf:存放hdata的配置,如:缓冲区大小、线程等待策略等.. lib:存放hdata核心框架jar程序 plugins:存放hdata的各种插件与依赖jar程序

 

  • 【执行mysql到mysql的数据库同步】
说明:输入端和输出端,必需存在指定数据库和表,否则数据同步将失败; 命令行参数

java -Xss256k -Xms1G -Xmx1G -Xmn512M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+DisableExplicitGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:SoftRefLRUPolicyMSPerMB=0 -Dhdata.conf.dir="D:	esthdata-0.2.8conf" -Dlog4j.configurationFile=file:///D:	esthdata-0.2.8conflog4j2.xml -classpath ".;D:	esthdata-0.2.8lib*" "com.github.stuxuhai.hdata.CliDriver" -Dhttps.protocols=TLSv1.2 -Dfile.encoding="UTF-8" --reader jdbc -Rurl="jdbc:mysql://127.0.0.1:3306/gateway?characterEncoding=utf8&useSSL=false" -Rdriver="com.mysql.jdbc.Driver" -Rtable="client" -Rusername="root" -Rpassword="123456" --writer jdbc -Wurl="jdbc:mysql://192.168.1.35:3306/gateway?characterEncoding=utf8&useSSL=false" -Wdriver="com.mysql.jdbc.Driver" -Wtable="client" -Wusername="root" -Wpassword="root_it_123465"
执行xml配置参数

hdata.bat -f D:/test/hdata-0.2.8/conf/mysqlToMysql.xml
mysqlToMysql.xml



  
		
		com.mysql.jdbc.Driver
		client
root 123456 3
com.mysql.jdbc.Driver client
root 123456 3
  • 【执行mysql到excel的数据同步】
说明:输入端和输出端,必需存在指定数据库和表,否则数据同步将失败,输出时自动创建excel文件; 命令行参数

java -Xss256k -Xms1G -Xmx1G -Xmn512M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+DisableExplicitGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:SoftRefLRUPolicyMSPerMB=0 -Dhdata.conf.dir="D:	esthdata-0.2.8conf" -Dlog4j.configurationFile=file:///D:	esthdata-0.2.8conflog4j2.xml -classpath ".;D:	esthdata-0.2.8lib*" "com.github.stuxuhai.hdata.CliDriver" -Dhttps.protocols=TLSv1.2 -Dfile.encoding="UTF-8" --reader jdbc -Rurl="jdbc:mysql://127.0.0.1:3306/gateway?characterEncoding=utf8&useSSL=false" -Rdriver="com.mysql.jdbc.Driver" -Rtable="client" -Rusername="root" -Rpassword="123456" --writer excel -Wpath="D://test//client.xlsx" -Winclude.column.names="true"
执行xml配置参数

hdata.bat -f D:/test/hdata-0.2.8/conf/mysqlToExcel.xml
mysqlToExcel.xml



  
		
		com.mysql.jdbc.Driver
		client
root 123456 3
true
  • 【执行http到excel的数据同步】
说明:输入端和输出端,必需存在URL所表示的http服务,否则数据同步将失败,输出时自动创建excel文件; 执行http到excel

java -Xss256k -Xms1G -Xmx1G -Xmn512M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+DisableExplicitGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:SoftRefLRUPolicyMSPerMB=0 -Dhdata.conf.dir="D:	esthdata-0.2.8conf" -Dlog4j.configurationFile=file:///D:	esthdata-0.2.8conflog4j2.xml -classpath ".;D:	esthdata-0.2.8lib*" "com.github.stuxuhai.hdata.CliDriver" -Dhttps.protocols=TLSv1.2 -Dfile.encoding="UTF-8" --reader http -Rurl="https://www.baidu.com/" --writer excel -Wpath="D://test//html2.xlsx" -Winclude.column.names="true"
执行xml配置参数

hdata.bat -f D:/test/hdata-0.2.8/conf/httpToExcel.xml
httpToExcel.xml



  
      
  
	
		
		true
	

3、IDEA中查看代码

导入工程

 

2.配置启动参数

 

Configuration配置

VM Options: -Dhttps.protocols=TLSv1.2 -Dhdata.conf.dir="D:\Workspaces\idea_2\HData-master\conf"
Program arguments: --reader jdbc -Rurl="jdbc:mysql://127.0.0.1:3306/gateway?characterEncoding=utf8&useSSL=false" -Rdriver="com.mysql.jdbc.Driver" -Rtable="client" -Rusername="root" -Rpassword="123456"  --writer jdbc -Wurl="jdbc:mysql://192.168.1.35:3306/gateway?characterEncoding=utf8&useSSL=false" -Wdriver="com.mysql.jdbc.Driver" -Wtable="client" -Wusername="root" -Wpassword="123456"
3.直接从hdata-core模块的CliDriver类中运行即可

 

4、问题 1.[Fatal Error] mysqlToMysql.xml:5:73: 对实体 "useSSL" 的引用必须以 ";" 分隔符结尾。

[Fatal Error] mysqlToMysql.xml:5:73: 对实体 "useSSL" 的引用必须以 ";" 分隔符结尾。

因为xml结构内有&=等特殊符号,xml解析失败,将内容以 包装起来即可;

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ETL数据导入导出工具HData使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ETL数据导入导出工具HData使用

注:近期因朋友的请求协助了解Hdata工具的使用,抽空进行了摸索,特整理此文;该ETL数据交换工具开发者已经有三、四年没有更新维护记录了,不确定该项目是否会继续维护,因此选择该工具应用于项目时,请考虑后续的技术支持与问题处理等所需要的解决方案成本; 1、介绍
ETL数据导入导出工具HData使用
2016-08-25

postgresql数据库导出和导入及常用的数据库管理工具

目录简介一、数据库的导出和导入1. 使用pgAdmin导出和导入数据库2. 使用Navicate导出和导入数据库3.js 使用DBeaver导出和导入数据库二、数据库表的导出和导入1. 使用pgAdmin导出和导入数据表2. 使用Navic
2023-04-19

pentaho工具将数据库数据导入导出为Excel图文的方法

今天小编给大家分享一下pentaho工具将数据库数据导入导出为Excel图文的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
2023-06-29

如何使用Oracle实现数据导入和导出

要使用Oracle实现数据导入和导出,可以使用以下方法:数据导入:使用Oracle SQL Developer工具:可以通过Oracle SQL Developer工具来导入数据。在SQL Developer中,选择要导入数据的表,然后使
如何使用Oracle实现数据导入和导出
2024-03-02

使用Java导入、导出excel详解(附有封装好的工具类)

😜作           者:是江迪呀✒️本文关键词:Java、Excel、导出、工具类、后端☀️每日   一言:有些事情不是对的才去坚持,而是坚持了它才是对的! 前言 我们在日常开发中,一定遇到过要将数据导出为Exc
2023-08-18

oracle数据泵导入导出部分用户

问题描述:需要将140服务器中的tbomnew实例下的部分用户导入到118服务器下的tbompx实例中,本次导入导出的两个数据库均为19C部分用户名:CORE,MSTDATA,BOMMGMT,CFGMGMT,CHGMGMT,CUST,integration 1
oracle数据泵导入导出部分用户
2014-12-06

MySQL官方导出工具mysqlpump的使用

目录简介使用介绍实际体验优缺点总结一下简介 mysqlpump 是 mysqldump 的一个衍生,本身也参考了 mydumper 的思路,支持了并行导出数据,因此导出数据的效率比 mysqldump 会高很多。 使用介绍mysqlpump
2022-05-17

编程热搜

目录