天天看點

區塊鍊資料分析必備工具BlockETL

BlockETL軟體包用于比特币區塊鍊資料分析中的資料抽取/轉換/加載(ETL),可以從原始的比特币區塊檔案中抽取區塊與交易資料并加載入通用SQL資料庫,以便于後續的資料分析處理,非常适合區塊鍊資料分析相關的畢業設計或課題研究項目。BlockETL官方下載下傳位址: http://sc.hubwiz.com/codebag/blocketl-java/

1、軟體包概述

BlockETL軟體包的主要特性如下:

  • 直接讀取原始區塊檔案,抽取速度快
  • 将原始區塊和交易資料加載至SQL資料庫,便于後續的區塊鍊資料分析
  • 支援多流水線并行處理,可自己控制并發流水線數量
  • 結構設計清晰,代碼便于擴充

BlockETL軟體包采用Java開發,支援Windows、OSX和Linux等多種作業系統,目前版本1.0.0,主要類/接口及關系如下圖所示:

區塊鍊資料分析必備工具BlockETL

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為例說明使用過程:

2.1 初始化資料庫/表結構

進入軟體包的

sql

目錄,使用

ddl.sql

腳本建立資料庫和基礎表結構:

mysql -u root -p < ddl.sql           

上述指令會要求互動輸入root使用者的密碼,也可以使用其他有足夠權限的使用者名/密碼。成功執行後,上述指令将建立資料庫bitcoin_analysis和基礎資料表:

區塊鍊資料分析必備工具BlockETL
  • 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

指令啟動示範應用,可以看到螢幕輸出的資料加載進度:

區塊鍊資料分析必備工具BlockETL

軟體包的

demo

應用除了在螢幕輸出日志,也會記錄到目前目錄下的

app.log

檔案中,可以利用此檔案排查故障。

要長時間無人值守運作,可以使用

gradle distZip

打包後再執行編譯好的程式。

2.4 資料分析

一旦完成區塊鍊資料的抽取并加載到SQL資料庫中,就可以進行資料分析了。

為了提高資料加載速度,在之前的

ddl.sql

中沒有定義資料表的索引,是以在進行資料分析之前,首先要使用

index.sql

來建立資料表索引以加速統計查詢的執行。進入sql目錄執行如下指令完成索引建構,根據要求輸入密碼:

mysql -u root -p < index.sql           

索引建立之後,就可以利用SQL進行資料分析了。預置的stats.sql提供了幾個基本的分析,可以作為參考。

官方下載下傳位址:

BlockETL - 彙智網