ELTのデータ統合問題を解決する Apache SeaTunnel
ビジネスで素早い意思決定が求められるにつれ、従来のETLでは遅すぎると言われるようになってきました。
そこで登場したのがELTですが、データソースからデータレイクへデータを統合・同期しつつロードする部分に難しさを抱えています。
そこへ現れたのがApache SeaTunnel。
どんなものかちょっとだけ見てみましょう。
概要
Apache SeaTunnelは異なるデータソースを統合・同期するための、高パフォーマンスで分散型、大規模データにも使えるオールインワンのソリューションです。
冒頭で話した通り、ビッグデータ時代のELTのEとLを担います。
Tはほとんどできなくて、せいぜいデータの大文字小文字を揃えたり、列を2つに分割したり、列名を変えたり…その程度です。
重要なコンポーネント
データソースコネクタ
分散ストレージでもオブジェクトストレージでも、RDBでもNoSQLでもグラフSQLでもOK
データ加工コネクタ
データソースとデータ同期のスキーマが異なる場合の仲介
データ同期コネクタ
データのロード先と繋がる
ジョブ定義
ジョブ定義はコンフィグファイルで行えます。
フォーマットはjsonかhocon(あまり聞き慣れない)です。
中身はenv, source, transform, sinkの4セクションで構成されます。
env {
job.mode = "BATCH"
}
source {
FakeSource {
result_table_name = "fake"
row.num = 100
schema = {
fields {
name = "string"
age = "int"
card = "int"
}
}
}
}
transform {
Filter {
source_table_name = "fake"
result_table_name = "fake1"
fields = [name, card]
}
}
sink {
Clickhouse {
host = "clickhouse:8123"
database = "default"
table = "seatunnel_console"
fields = ["name", "card"]
username = "default"
password = ""
source_table_name = "fake1"
}
}
上記のコンフィグはかなり簡単な例ですが、システムが大規模になるとコンフィグの内容が肥大化する未来が見えますね。
要件
多くのApache製品がそうであるように、裏側はJavaで動いています。
まとめ
「ELTをやるときはこれを使えば何でも解決!」というわけではなさそうですが、プロジェクトの条件次第ではバチッとはまりそうだと感じました。
参考
https://towardsdev.com/what-the-heck-is-apache-seatunnel-5aba222c2f87
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!