勉強用に金融トランザクション・データを入手する
Spark を使った分析アプリケーション構築を作るに際して、ある程度の規模を持ったトランザクション・データが欲しかったので、暗号資産の取引データを入手してみました。
Googleで検索した感じ、日本語での説明書きがなかったので、記録として残しておきます。
1.データソースの選定
Blockchain から直接入手
暗号資産のデータはブロックチェーンから直接取得することが可能です。Github 上でETLプロジェクトが共有されており、Pythonであれば pip でプロジェクトを入手して、自分のアプリに組み込むことも可能です。
(結論)
ストリームでのデータ入手も可能で自由度は高いですが、ビットコイン・ノードのインストールが必要で環境構築が面倒だったので利用を断念しました。
Google BigQuery から入手
Google BigQuery から暗号資産のデータに対するクエリ実行と、CSVやJSON形式でのデータのダウンロードが可能です。Google アカウントがあれば無償で利用可能で、日本語で解説したQiitaの記事もあるため、かなりハードルは低いと思います。
(結論)
BigQueryは、最大1GBのデータ・ダウンロードが可能(※フォーマットによって異なる)ですが、ビットコインのデータは、1か月で最低でも数GBになるため、半年分くらいのデータが欲しかった私の利用用途には適合しませんでした。
AWS Public Blockchain Data から入手
こちらのデータ・セットは、2009年からのビットコインと2015年からのイーサリアムのみが対象となっていますが、1日単位で Parquet 形式に分割されて S3 上に保存されています。ダウンロードするために、AWS CLIのインストールは必要でしたが、AWSアカウントでの認証は不要です。
(結論)
入手が容易で、入手後のファイル形式も Spark でハンドリングする上では問題にならないので、こちらの手法で進めることとしました。
2.データの入手手順
AWS CLI のインストール
今回、私は WSL 上に環境構築しているため、AWS CLI install and update instructions を参考に、AWS CLI をインストールします。
$ sudo apt install unzip
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
rm awscliv2.zip
sudo ./aws/install
ファイルの確認
AWS CLI のインストールが完了したら、コマンドラインを利用して、ファイルを確認してみます。S3のディレクトリについては Github の guidance-for-digital-assets-on-aws にしました。
下記コマンドでは、ビットコインの2020年2月6日付のトランザクションデータを確認しています。1日で約456MBのParquetファイルが生成されています。
日付を変えれば、他の日のデータを確認することも可能です。
$ aws s3 ls --no-sign-request s3://aws-public-blockchain/v1.0/btc/transactions/date=2020-02-06/
2022-09-16 06:28:20 456230891 part-00000-4cbf63db-6734-4292-bbe2-6530ec2b92ca-c000.snappy.parquet
$ aws s3 ls --no-sign-request s3://aws-public-blockchain/v1.0/btc/transactions/date=2009-01-03/
2022-09-16 01:27:14 8807 part-00000-bdd84ab2-82e9-4a79-8212-7accd76815e8-c000.snappy.parquet
ファイルのダウンロード
上記 ls コマンド と同じ要領で cp コマンドを使うことで、ローカルにファイルをコピーすることができます。
$ aws s3 cp s3://aws-public-blockchain/v1.0/btc/transactions/date=2009-01-03/ ./ --recursive --no-sign-request
download: s3://aws-public-blockchain/v1.0/btc/transactions/date=2009-01-03/part-00000-bdd84ab2-82e9-4a79-8212-7accd76815e8-c000.snappy.parquet to ./part-00000-bdd84ab2-82e9-4a79-8212-7accd76815e8-c000.snappy.parquet
$ ls
part-00000-bdd84ab2-82e9-4a79-8212-7accd76815e8-c000.snappy.parquet
3.ファイルの一括入手
最後にファイルの一括入手に向けて、シェルスクリプトを組みます。
Cursor にお願いしてシェルスクリプトを生成します。 これを実行することで、必要なブロックチェーンのデータを入手することができました。
この記事が気に入ったらサポートをしてみませんか?