
BlockETL软件包用于比特币区块链数据分析中的数据抽取、转换和加载。 主要特性如下:
直接读取原始区块文件,抽取速度快将原始区块和交易数据加载至SQL数据库,便于后续的区块链数据分析支持多流水线并行处理,可自己控制并发流水线数量结构设计清晰,代码便于扩展BlockETL软件包采用Java开发,支持Windows、OSX和Linux等多种 *** 作系统, 当前版本1.0.0,主要类/接口及关系如下图所示:
BlockETL软件包的目录组织及主要代码文件清单如下:
| 代码文件 | 说明 |
|---|---|
| build.gradle | Gradle根项目构建文件 |
| settings.gradle | Gradle根项目配置文件 |
| blocketl/ | blocketl库代码目录 |
| blocketl/build.gradle | blocket库gradle构建文件 |
| blocketl/src/main/java/blocketl/IPipe.java | ETL流水线管道接口定义 |
| blocketl/src/main/java/blocketl/Pipeline.java | ETL流水线模型类 |
| blocketl/src/main/java/blocketl/Kit.java | ETL流水线并发管理类 |
| blocketl/src/main/java/blocketl/btc/FileExtractor.java | Bitcoin区块文件抽取管道实现类 |
| blocketl/src/main/java/blocketl/btc/DummyTransformer.java | Bitoin区块及交易数据转换实现类 |
| blocketl/src/main/java/blocketl/btc/SqlLoader.java | SQL数据库加载类 |
| sql/ | SQL脚本目录 |
| sql/ddl.sql | 数据库及表结构定义SQL脚本 |
| sql/index.sql | 数据表索引构建SQL脚本 |
| sql/stats.sql | 分析统计演示SQL脚本 |
| demo/ | blocketl库使用演示代码目录 |
| demo/build.gradle | 演示应用gradle构建文件 |
| demo/src/App.java | 演示应用主文件 |
| demo/src/log4j.properties | log4j日志配置文件 |
在开始使用软件包之前,请先安装好gradle 6、jdk 8和所选择的SQL数据库。下面 以MySQL为例说明使用过程:
安装mysql服务器,参考文档:Install and Upgrading MySQL。安装jdk 8,参考文档:JDK 8 Installation安装gradle 6,参考文档:Gradle Installation。2.1 初始化数据库/表结构
进入软件包的sql目录,使用ddl.sql脚本创建数据库和基础表结构:
mysql -u root -p < ddl.sql
上述命令会要求交互输入root用户的密码,也可以使用其他有足够权限的用户名/密码。 成功执行后,上述命令将创建数据库bitcoin_analysis和基础数据表:
blocks:比特币区块头数据表transactions:比特币交易头数据表tx_inputs:比特币交易输入数据表tx_output:比特币交易输出数据表 2.2 抽取流程配置首先根据自己的基础环境配置,修改demo/src/App.java文件中的区块目录和数据库连接信息并保存:
String dataDir = "…"; //区块数据文件目录
String dbUrl = "jdbc:…. "; //SQL数据库连接URL
String dbUser = "…", //SQL数据库用户名
String dbPassword = "…"; //SQL数据库密码
String network = "mainnet"; //主网:mainnet,测试网:testnet
2.3 数据抽取与加载
进入软件包的demo目录,使用gradle run或gradle.bat run命令启动演示应用, 可以看到屏幕输出的数据加载进度:
软件包的demo应用除了在屏幕输出日志,也会记录到当前目录下的app.log文件中, 可以利用此文件排查故障。
要长时间无人值守运行,可以使用gradle distZip打包后再执行编译好的程序。
一旦完成区块链数据的抽取并加载到SQL数据库中,就可以进行数据分析了。
为了提高数据加载速度,在之前的ddl.sql中没有定义数据表的索引,因此在进行 数据分析之前,首先要使用index.sql来建立数据表索引以加速统计查询的执行。 进入sql目录执行如下命令完成索引构建,根据要求输入密码:
mysql -u root -p < index.sql
索引建立之后,就可以利用SQL进行数据分析了。预置的stats.sql提供了几个 基本的分析,可以作为参考。
学如逆水行舟,不进则退。心似平原跑马,易放难收。IT技术是指掌握多种技能,并能利用多种技能独立完成产品的人。 也叫全端工程师(同时具备前端和后台能力),英文Full Stack engineer。【人工智能】【区块链】【系统/网络/运维】【云计算/大数据】【数据库】【移动开发】【后端开发】【游戏开发】【UI设计】【微服务】【爬虫】【Java】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。欢迎各位大神萌新一起专研分享技术。。。欢迎加入【技术开发交流群】:958319786
————————————————
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)