TiDB Cloud Lake への Avro のロード
Avro とは
Apache Avro™ はレコードデータ向けの代表的なシリアライズ形式であり、ストリーミングデータパイプラインで最初に選ばれる形式です。
Avro ファイルのロード
AVRO ファイルをロードする一般的な構文は次のとおりです。
COPY INTO [<database>.]<table_name>
FROM { internalStage | externalStage | externalLocation }
[ PATTERN = '<regex_pattern>' ]
FILE_FORMAT = (TYPE = AVRO)
- Avro ファイル形式のオプションの詳細については、Avro ファイル形式オプション を参照してください。
- COPY INTO table オプションの詳細については、COPY INTO table を参照してください。
チュートリアル: リモート HTTP URL から TiDB Cloud Lake に Avro データをロードする
このチュートリアルでは、Avro スキーマを使用して TiDB Cloud Lake にテーブルを作成し、GitHub でホストされている .avro ファイルから HTTPS 経由で Avro データを直接ロードします。
ステップ 1: Avro スキーマを確認する
TiDB Cloud Lake にテーブルを作成する前に、まず使用する Avro スキーマを簡単に確認しましょう: userdata.avsc。このスキーマでは、User という名前のレコードが定義されており、13 個のフィールドがあります。大半は string 型で、int 型と float 型も含まれています。
{
"type": "record",
"name": "User",
"fields": [
{"name": "registration_dttm", "type": "string"},
{"name": "id", "type": "int"},
{"name": "first_name", "type": "string"},
{"name": "last_name", "type": "string"},
{"name": "email", "type": "string"},
{"name": "gender", "type": "string"},
{"name": "ip_address", "type": "string"},
{"name": "cc", "type": "string"},
{"name": "country", "type": "string"},
{"name": "birthdate", "type": "string"},
{"name": "salary", "type": "float"},
{"name": "title", "type": "string"},
{"name": "comments", "type": "string"}
]
}
ステップ 2: TiDB Cloud Lake にテーブルを作成する
スキーマで定義された構造に一致するテーブルを作成します。
CREATE TABLE userdata (
registration_dttm STRING,
id INT,
first_name STRING,
last_name STRING,
email STRING,
gender STRING,
ip_address STRING,
cc VARIANT,
country STRING,
birthdate STRING,
salary FLOAT,
title STRING,
comments STRING
);
ステップ 3: リモート HTTPS URL からデータをロードする
COPY INTO userdata
FROM 'https://raw.githubusercontent.com/Teradata/kylo/master/samples/sample-data/avro/userdata1.avro'
FILE_FORMAT = (type = avro);
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ File │ Rows_loaded │ Errors_seen │ First_error │ First_error_line │
├──────────────────────────────────────────────────────────────┼─────────────┼─────────────┼──────────────────┼──────────────────┤
│ Teradata/kylo/master/samples/sample-data/avro/userdata1.avro │ 1000 │ 0 │ NULL │ NULL │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
ステップ 4: データをクエリする
これで、インポートしたデータを確認できます。
SELECT id, first_name, email, salary FROM userdata LIMIT 5;
┌───────────────────────────────────────────────────────────────────────────────────┐
│ id │ first_name │ email │ salary │
├─────────────────┼──────────────────┼──────────────────────────┼───────────────────┤
│ 1 │ Amanda │ ajordan0@com.com │ 49756.53 │
│ 2 │ Albert │ afreeman1@is.gd │ 150280.17 │
│ 3 │ Evelyn │ emorgan2@altervista.org │ 144972.52 │
│ 4 │ Denise │ driley3@gmpg.org │ 90263.05 │
│ 5 │ Carlos │ cburns4@miitbeian.gov.cn │ NULL │
└───────────────────────────────────────────────────────────────────────────────────┘