试图在Windows环境下使用Embulk和Digdag构建数据分析基础设施的故事
创建这篇文章的背景
你好。我是某公司数据利用部门的工作人员masahiro54。
由于最近开始涉足与数据架构相关的工作,所以我决定写一篇文章来学习。
我觉得将其输出也会更加有成效。
然后,我考虑在本地环境中尝试使用流行的工具”embulk”和”digdag”。
这次的目标
按照下图所示,使用Embulk进行以下数据协调。
-
- csv文件转为分析数据库
- 其他数据库转为分析数据库
本次的目标是在DigDag中执行Embulk。
在做作业之前的状态
环境(就是这样)。
尽管整体环境有点陈旧,但由于这边更加方便,所以没有升级到最新。
-
- windows11
-
- java 1.8.0_371
-
- PostgreSQL13
-
- digdag 0.9.42
- embulk 0.10.0
作业开始前的状态
以下是如下所示的情况。
- 分析DB
尝试过的事情
转换
准备好
-
- 使用以下命令安装embulk(版本0.10.0)。
将”embulk-0.10.0.jar”更名为”embulk-latest.jar”即可使用最新版本。
(可能下面的命令是正确的,但只是从以前的备忘录中复制粘贴的,如果有错误,请谅解。)
PowerShell -Command "& {Invoke-WebRequest http://dl.embulk.org/embulk-0.10.0.jar -OutFile embulk.bat}"
-
- 为了操作PostgreSQL,需要安装以下两个插件。命令如下:
- ※CSV插件已经默认安装了。
-
- embulk-input-postgresql
- embulk-output-postgresql
以下是命令的列表。
embulk gem install embulk-input-postgresql
embulk gem install embulk-output-postgresql
-
- 更新JDBC驅動程序
-
- 打開以下目錄中相應插件的文件夾,將JDBC驅動程序在”default_jdbc_driver”文件夾中替換為最新版本。
- (我將”postgresql-9.4-1205-jdbc41.jar”替換為”postgresql-42.6.0.jar”。)
.embulk\lib\gems\gems
顺便提一下,我是从这里下载的PostgreSQL的JDBC驱动程序。(https://jdbc.postgresql.org/)
创建yml文件
这次我们完成了以下两点。
-
- csvからDBにデータを送るためのymlファイル
- DBから別のDBにデータを送るためのymlファイル
用于将csv数据发送到数据库的yml文件
请将自己环境的密码输入为适当的字符序列。
in:
type: file
path_prefix: C:aaa\\bbb\\ccc\\sample_2_csv_pipeline_test.csv # 入力ファイルのパスを記載してください。
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
skip_header_lines: 1
columns:
- {name: id, type: string}
- {name: value, type: string}
out:
type: postgresql
host: localhost
user: postgres
password: poiuytrewq
database: data_pipeline_test_B #分析用DB
table: service_dummy
mode: insert
将数据从一个数据库发送到另一个数据库所需的yml文件。
in:
type: postgresql
host: localhost
user: postgres
password: poiuytrewq
database: data_pipeline_test_A #分析以外の用途のDB
query:
select *
FROM service_dummy #入力元のデータを引っ張るSQL
out:
type: postgresql
host: localhost
user: postgres
password: poiuytrewq
database: data_pipeline_test_B #分析用DB
table: service_dummy
mode: insert
挖掘秘密
准备好
-
- 用以下命令安装digdag(版本0.9.42):
将“digdag-0.9.42.jar”更名为“digdag-latest.jar”,即可更新至最新版。
(虽然与embulk命令略有不同,请不必担心。我认为它们应该几乎相同。顺便说一下,当时我是按照digdag → embulk的顺序进行准备的。)
PowerShell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::TLS12; mkdir -Force $env:USERPROFILE\bin; Invoke-WebRequest http://dl.digdag.io/digdag-0.9.42.jar -OutFile $env:USERPROFILE\bin\digdag.bat}"
-
- 创建dig文件
- 已创建以下dig文件。
timezone: "Asia/Tokyo"
_export:
sh:
shell: ["powershell.exe"]
# schedule:
# daily>: 10:00:00
+step1:
sh>: embulk run csv_to_db.yml
+step2:
sh>: embulk run db_to_db.yml
+step3:
echo>: Fin.
结果
总结
-
- とりあえず、embulkとdigdagの簡単な使い方はわかりました。
-
- 応用すれば、会社のデータ基盤でも使えそうです。
- とはいえこれだけだとかなりシンプルな動きしかできなさそうなので、さらに工夫を凝らした仕組みを構築してみたいです。。。
我想要尝试的将来事项。
-
- embulkにクラウド環境へのデータ連携
-
- データソースからDWHに格納し、BIで可視化するまで。
-
- 分析用DBにおけるデータの洗い替えのパフォーマンス実験。
Update
Delete → Insert
Drop → Create