見出し画像

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

よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!