试图在Windows环境下使用Embulk和Digdag构建数据分析基础设施的故事

创建这篇文章的背景

你好。我是某公司数据利用部门的工作人员masahiro54。
由于最近开始涉足与数据架构相关的工作,所以我决定写一篇文章来学习。
我觉得将其输出也会更加有成效。

然后,我考虑在本地环境中尝试使用流行的工具”embulk”和”digdag”。

这次的目标

按照下图所示,使用Embulk进行以下数据协调。

    1. csv文件转为分析数据库

 

    其他数据库转为分析数据库
記事用1.png

本次的目标是在DigDag中执行Embulk。

在做作业之前的状态

环境(就是这样)。

尽管整体环境有点陈旧,但由于这边更加方便,所以没有升级到最新。

    • windows11

 

    • java 1.8.0_371

 

    • PostgreSQL13

 

    • digdag 0.9.42

 

    embulk 0.10.0

作业开始前的状态

以下是如下所示的情况。

input_csv.png
input_DB.png
    分析DB
もともとのDB.png

尝试过的事情

转换

准备好

    1. 使用以下命令安装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}"
    1. 为了操作PostgreSQL,需要安装以下两个插件。命令如下:

 

    ※CSV插件已经默认安装了。
    • embulk-input-postgresql

 

    embulk-output-postgresql

以下是命令的列表。

embulk gem install embulk-input-postgresql
embulk gem install embulk-output-postgresql
    1. 更新JDBC驅動程序

 

    1. 打開以下目錄中相應插件的文件夾,將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

挖掘秘密

准备好

    1. 用以下命令安装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}"
    1. 创建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.

结果

処理後output_DB.png

总结

    • とりあえず、embulkとdigdagの簡単な使い方はわかりました。

 

    • 応用すれば、会社のデータ基盤でも使えそうです。

 

    とはいえこれだけだとかなりシンプルな動きしかできなさそうなので、さらに工夫を凝らした仕組みを構築してみたいです。。。

我想要尝试的将来事项。

    • embulkにクラウド環境へのデータ連携

 

    • データソースからDWHに格納し、BIで可視化するまで。

 

    • 分析用DBにおけるデータの洗い替えのパフォーマンス実験。

Update
Delete → Insert
Drop → Create

广告
将在 10 秒后关闭
bannerAds