メインコンテンツまでスキップ

データのインポート(SDK)

このガイドでは、bulk-writer および bulk-import API を使用して、SDK で collection にデータをインポートする方法を学べます。

また、データ準備と Zilliz Cloud collection へのデータインポートの両方を扱う高速スタートのエンドツーエンドコースも参照できます。

📘注意

Zilliz Cloud では現在、クラスターをホストしているクラウドプロバイダーに関係なく、任意のオブジェクトストレージサービスから任意の Zilliz Cloud cluster にデータをインポートできます。たとえば、AWS S3 バケットから GCP 上にデプロイされた Zilliz Cloud cluster にデータをインポートできます。

低レイテンシで安定した体験を確保するため、ターゲット cluster と同じプロバイダーかつ同じリージョンのバケットまたは blob container を使用することをお勧めします。

依存関係のインストール

ターミナルで次のコマンドを実行し、pymilvusminio をインストールするか、最新バージョンにアップグレードします。

shell
python3 -m pip install --upgrade pymilvus minio

準備済みデータの確認

BulkWriter ツールを使用してデータを準備し、準備済みファイルのパスを取得したら、それらを Zilliz Cloud collection にインポートする準備が整います。準備ができているかを確認するには、次のようにします。

python
from minio import Minio

# Third-party constants
ACCESS_KEY = "YOUR_ACCESS_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
BUCKET_NAME = "YOUR_BUCKET_NAME"
REMOTE_PATH = "YOUR_REMOTE_PATH"

client = Minio(
endpoint="storage.googleapis.com", # use 's3.amazonaws.com' for AWS S3
access_key=ACCESS_KEY,
secret_key=SECRET_KEY,
secure=True
)

objects = client.list_objects(
bucket_name=BUCKET_NAME,
prefix=REMOTE_PATH,
recursive=True
)

print([obj.object_name for obj in objects])

# Output
#
# [
# "folder/1/claps.npy",
# "folder/1/id.npy",
# "folder/1/link.npy",
# "folder/1/publication.npy",
# "folder/1/reading_time.npy",
# "folder/1/responses.npy",
# "folder/1/title.npy",
# "folder/1/vector.npy"
# ]

データのインポート

データと collection の準備ができたら、オブジェクトストレージバケットやブロックストレージの blob container などの外部ストレージを介して、特定の collection にデータをインポートできます。

データのインポート

外部ストレージ経由でデータをインポートする場合は、次のようにします。

python
from pymilvus.bulk_writer import bulk_import

# Bulk-import your data from the prepared data files
CLOUD_API_ENDPOINT = "https://api.cloud.zilliz.com"
CLUSTER_ID = "inxx-xxxxxxxxxxxxxxx"
API_KEY = ""
STORAGE_URL = ""
ACCESS_KEY = ""
SECRET_KEY = ""

res = bulk_import(
api_key=API_KEY,
url=CLOUD_API_ENDPOINT,
cluster_id=CLUSTER_ID,
collection_name="quick_setup",
object_url=STORAGE_URL,
access_key=ACCESS_KEY,
secret_key=SECRET_KEY
)

print(res.json())

# Output
#
# {
# "code": 0,
# "data": {
# "jobId": "9d0bc230-6b99-4739-a872-0b91cfe2515a"
# }
# }
📘注意

データのインポートを正常に行うために、ターゲット collection の実行中または保留中のインポートジョブ数が 10,000 未満であることを確認してください。

インポート進捗の確認

指定した bulk-import ジョブの進捗を確認できます。

python
import json
from pymilvus.bulk_writer import get_import_progress

## Zilliz Cloud constants
CLOUD_API_ENDPOINT = "https://api.cloud.zilliz.com"
CLUSTER_ID = "inxx-xxxxxxxxxxxxxxx"
API_KEY = ""

# Get bulk-insert job progress
resp = get_import_progress(
api_key=API_KEY,
url=CLOUD_API_ENDPOINT,
cluster_id=CLUSTER_ID,
job_id="job-01fa0e5d42cjxudhpuehyp",
)

print(json.dumps(resp.json(), indent=4))

すべてのインポートジョブの一覧表示

すべての bulk-import タスクも確認したい場合は、次のように list-import-jobs API を呼び出せます。

python
import json
from pymilvus.bulk_writer import list_import_jobs

## Zilliz Cloud constants
CLOUD_API_ENDPOINT = "https://api.cloud.zilliz.com"
CLUSTER_ID = "inxx-xxxxxxxxxxxxxxx"
API_KEY = ""

# List bulk-insert jobs
resp = list_import_jobs(
api_key=API_KEY,
url=CLOUD_API_ENDPOINT,
cluster_id=CLUSTER_ID
)

print(json.dumps(resp.json(), indent=4))
Ctrl I