0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

特徴量エンジンKaskada基礎~テーブルへのデータのロード

Last updated at Posted at 2023-06-08

はじめに

先日、以下の記事を発表しました。

新しいテクノロジーに触れる時はいつでも楽しいものです。
中でも新しいプログラミング言語(のパラダイム)を学ぶことは、特別に楽しいことです。

ということで、まだまだ勉強中ですが、公式ドキュメントの学習過程の記録として、以下の記事をまとめてみました。

本稿情報のソースとして、下記ドキュメントを参照ください。

テーブルへのデータのロード

Kaskada はデータをテーブル形式で保持します。テーブルは複数の行で構成され、各行は同じ型の値です。

テーブルの詳細は、リファレンスの下記項目で確認できます。

Kaskadaのテーブルに、データをロードする前に、Kaskadaに対してテーブルを定義しておく必要があります。

テーブルにロードされるデータには、テーブル定義で使用されるすべての列が含まれている必要があります。(現時点では)テーブルにロードされるすべてのデータは同じスキーマを持つ必要があります。

さらに、次のことが期待されます。

  • time 列 (およびデータセット内の他のすべての日時列) は、timestamp型にキャストできる型(たとえば、整数または RFC3330 形式の文字列) である必要があります。
  • サブソート列が定義されている場合、エンティティ キー列、時間列、およびサブソート列の組み合わせにより、各行が一意である必要があります。

以下は、Parquet ファイルからKaskadaのテーブルに、データをロードする例です。

from kaskada import table
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

table.load(
  table_name = "Purchase",
  file = "/path/to/file.parquet",
)

ここでは、Parquetファイルが使われています。Kaskadaで、サポートされるフォーマットについては後述します。

データをロードした結果(loadの戻り値)は、以下のようにdata_token_idになります。

data_token_id: "aa2***a6b9"

データ トークン ID は、現在 Kaskada に保存されているデータへの一意の参照です。データ トークンにより反復可能なクエリが可能になります。同じデータ トークンに対して実行されるクエリは、常に同じ入力データに対して実行されます。

サポートされている形式

Apache Parquet は、効率的なデータの保存と取得のために設計されたオープンソースの列指向のデータ ファイル形式です。Parquetは、Kaskadaで扱うような大量のイベントデータの扱いに適しています。

from kaskada import table
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

table.load(
  table_name = "Purchase",
  file = "/path/to/file.parquet",
)

Python ライブラリは、ファイルのパスの拡張子からファイルの形式を推測します。Parquet ファイル名は.parquetで終わる必要があります。

CSV

カンマ区切り値 (CSV) ファイルは、値をカンマで区切る区切りテキスト ファイルです。ファイルの各行はデータ レコードです。

CSV ファイルには、ファイルのスキーマを推測するために使用されるヘッダー行が含まれている必要があります。CSV 型の推論は、データのロード時に行われます。スキーマは、最初の 1000 行を読み取ることによって推論されます。

from kaskada import table
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

table.load(
  table_name = "Purchase",
  file = "/path/to/file.csv",
)

Python ライブラリは、ファイルのパスの拡張子からファイルの形式を推測します。CSV ファイル名は.csv で終わる必要があります。

ファイルの場所

Kaskada は、さまざまな種類のファイル ストレージからのファイルのロードをサポートしています。ファイル ストレージ システムは、ファイル パス プロトコル プレフィックス (たとえば、file:または s3:)を使用して指定されます。

ローカルストレージ

file:プロトコルを使用してローカル ディスクからデータをロードできます。ディスクからロードする場合、ファイル パスは Kaskadaサービスからアクセスできる必要があります。

リモート Kaskada サービスを使用する場合、ローカル ストレージは推奨されません。

AWS S3ストレージ

s3:プロトコルを使用して、AWS S3 (または Minio などの互換ストア) からデータをロードできます。S3 から非公開オブジェクトをロードする場合は、Kaskada サービスに認証情報を設定する必要があります。資格情報は環境変数を使用して構成されます。

次の環境変数は、資格情報の構成に使用されます。

  • AWS_ACCESS_KEY_ID: AWS 認証情報キー。
  • AWS_SECRET_ACCESS_KEY: AWS 認証情報のシークレット。
  • AWS_DEFAULT_REGION: 指定されていない場合に使用する AWS S3 リージョン。
  • AWS_ENDPOINT: 接続先の S3 エンドポイント。
  • AWS_SESSION_TOKEN: セッショントークン。セッション トークンは、IAM ロールを引き受けることによって作成された認証情報に必要です。
  • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI: 詳細は、左記ページ参照 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html
  • AWS_ALLOW_HTTP: TLS を使用しない HTTP 接続を許可するには、「true」に設定します。

GCP GS ストレージ

gs:プロトコルを使用して GCP GS からデータをロードできます。AWS S3 ストレージ構成と同様に、Kaskada サービスは認証情報を使用して構成する必要があります。

次の環境変数は、資格情報の構成に使用されます。

  • GOOGLE_SERVICE_ACCOUNT: サービス アカウント ファイルの場所
  • GOOGLE_SERVICE_ACCOUNT_PATH: (エイリアス) サービス アカウント ファイルの場所
  • SERVICE_ACCOUNT: (エイリアス) サービス アカウント ファイルの場所
  • GOOGLE_SERVICE_ACCOUNT_KEY: JSON でシリアル化されたサービス アカウント キー
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?