はじめに
半構造化データ(例えば、JSON)を stream load または routine load を使用してインポートできます。
使用シナリオ
- Stream Load: テキストファイルに保存された JSON データをインポートするには、stream load を使用します。
- Routine Load: Kafka 内の JSON データをインポートするには、routine load を使用します。
Stream Load インポート
サンプルデータ:
{ "id": 123, "city" : "beijing"},
{ "id": 456, "city" : "shanghai"},
...
例:
curl -v --location-trusted -u <username>:<password> \
-H "format: json" -H "jsonpaths: [\"$.id\", \"$.city\"]" \
-T example.json \
http://FE_HOST:HTTP_PORT/api/DATABASE/TABLE/_stream_load
format: json パラメータは、インポート するデータの形式を実行することを可能にします。jsonpaths は、対応するデータインポートパスを実行するために使用されます。
関連パラメータ:
- jsonpaths: 各列の JSON パスを選択
- json_root: JSON の解析を開始する列を選択
- strip_outer_array: 最外部の配列フィールドを切り取る
- strict_mode: インポート中の列型変換を厳密にフィルタリング
JSON データスキーマと StarRocks データスキーマが完全に一致しない場合、Jsonpath を修正します。
サンプルデータ:
{"k1": 1, "k2": 2}
インポート例:
curl -v --location-trusted -u <username>:<password> \
-H "format: json" -H "jsonpaths: [\"$.k2\", \"$.k1\"]" \
-H "columns: k2, tmp_k1, k1 = tmp_k1 * 100" \
-T example.json \
http://127.0.0.1:8030/api/db1/tbl1/_stream_load
インポート中に k1 を 100 倍する ETL 操作が実行され、列は Jsonpath によって元のデータと一致します。
インポート結果は以下の通りです:
+------+------+
| k1 | k2 |
+------+------+
| 100 | 2 |
+------+------+
欠落している列については、列の定義が nullable であれば NULL が追加され、または ifnull によってデフォルト値を追加できます。
サンプルデータ:
[
{"k1": 1, "k2": "a"},
{"k1": 2},
{"k1": 3, "k2": "c"},
]
インポート例-1:
curl -v --location-trusted -u <username>:<password> \
-H "format: json" -H "strip_outer_array: true" \
-T example.json \
http://127.0.0.1:8030/api/db1/tbl1/_stream_load
インポート結果は以下の通りです:
+------+------+
| k1 | k2 |
+------+------+
| 1 | a |
+------+------+
| 2 | NULL |
+------+------+
| 3 | c |
+------+------+
インポート例-2:
curl -v --location-trusted -u <username>:<password> \
-H "format: json" -H "strip_outer_array: true" \
-H "jsonpaths: [\"$.k1\", \"$.k2\"]" \
-H "columns: k1, tmp_k2, k2 = ifnull(tmp_k2, 'x')" \
-T example.json \
http://127.0.0.1:8030/api/db1/tbl1/_stream_load
インポート結果は以下の通りです:
+------+------+
| k1 | k2 |
+------+------+
| 1 | a |
+------+------+
| 2 | x |
+------+------+
| 3 | c |
+------+------+