区块链数据分析必备工具BlockETL
BlockETL软件包用于比特币区块链数据分析中的数据抽取/转换/加载(ETL),可以从原始的比特币区块文件中抽取区块与交易数据并加载入通用SQL数据库,以便于后续的数据分析处理,非常适合区块链数据分析相关的毕业设计或课题研究项目。BlockETL官方下载地址:http://sc.hubwiz.com/codebag/blocketl-java/。
1、软件包概述
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日志配置文件 |
2、软件包使用方法
在开始使用软件包之前,请先安装好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
打包后再执行编译好的程序。
2.4 数据分析
一旦完成区块链数据的抽取并加载到SQL数据库中,就可以进行数据分析了。
为了提高数据加载速度,在之前的ddl.sql
中没有定义数据表的索引,因此在进行数据分析之前,首先要使用index.sql
来建立数据表索引以加速统计查询的执行。进入sql目录执行如下命令完成索引构建,根据要求输入密码:
mysql -u root -p < index.sql
索引建立之后,就可以利用SQL进行数据分析了。预置的stats.sql提供了几个基本的分析,可以作为参考。
官方下载地址:BlockETL - 汇智网

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云微服务消息队列(MQTT For IoT)C# 获取Token示例Demo
概述 微消息队列MQTT通过Token鉴权模式向MQTT客户端提供有时效性的临时访问权限。通过MQTT Token服务可以给本地账号系统管理的用户颁发临时的访问凭证,并限制访问权限,以实现对单一客户端,单一资源的细粒度权限控制。目前官方已经给出了Java获取Token的Demo,下面给出基于C#获取Token的实现,然后使用PostMan工具测试,用户可以基于PostMan工具生成其它语言获取Token的方法。 相关参考 1、API官方说明地址; 2、参考Java Demo; C# Code实现 1、Nuget 安装:Newtonsoft,处理Json对象使用; 2、完整的Code Sample using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Security.Cryptography; using System.Text; using Newtonsoft.Json.Linq; namespace MQTTTokenDemo { class ...
- 下一篇
Python3学习:运算符集合讲解
Python3学习:运算符集合讲解开讲啦!打开你们的小桌板,开始学习咯! Python语言支持的运算符 (1)算术运算符 (2)比较(关系)运算符 (3)赋值运算符 (4)逻辑运算符 (5)位运算符 (6)成员运算符 (7)身份运算符 算术运算符 (1) + (加):两个对象相加 (2) - (减):两个数相减,得到一个负数或者正数 (3) * (乘):两个数相乘或者是返回一个被重复若干次的字符串 (4) / (除):两数相除 (5) % (取模):两数相除,返回除法的余数 (6) ** (幂):返回x的y次幂 (7) // (取整除):向下取接近除数的整数 比较(关系)运算符:返回True或False (1) == (等于) :比较两个对象是否相等 (2) != (不等于):比较两个对象是否不相等 (3) > (大于): 返回x是否大于y (4) < (小于): 返回x是否小于y (5) >= (大于等于): 返回x是否大于等于y (6) <= (小于等于): 返回x是否小于等于y 注意:所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和F...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果