「Cloud Storage 文字到 Firestore」範本是一個批次管道,可將儲存在 Cloud Storage 中的 JSON 文件匯入 Firestore。
管道相關規定
目的地專案中的 Firestore 必須已啟用。
輸入格式
每個輸入檔案都必須包含以換行符號分隔的 JSON,其中每一行都包含 Datastore Entity
資料類型的 JSON 表示法。
舉例來說,下列 JSON 代表名為 Users
的集合中的文件。範例的格式是為了方便閱讀,但每份文件都必須以單行輸入的形式呈現。
{ "key": { "partitionId": { "projectId": "my-project" }, "path": [ { "kind": "users", "name": "alovelace" } ] }, "properties": { "first": { "stringValue": "Ada" }, "last": { "stringValue": "Lovelace" }, "born": { "integerValue": "1815", "excludeFromIndexes": true } } }
如要進一步瞭解文件模型,請參閱「實體、屬性和金鑰」。
範本參數
必要參數
- textReadPattern:用來指定文字資料檔案位置的 Cloud Storage 路徑模式,例如:
gs://mybucket/somepath/*.json
。 - firestoreWriteProjectId:要寫入 Firestore 實體的 Google Cloud 專案 ID。
- errorWritePath:處理期間寫入失敗的錯誤記錄輸出檔案,例如:
gs://your-bucket/errors/
。
選用參數
- javascriptTextTransformGcsPath:定義要使用的 JavaScript 使用者定義函式 (UDF) 的 .js 檔案 Cloud Storage URI。例如:
gs://my-bucket/my-udfs/my_file.js
。 - javascriptTextTransformFunctionName:要使用的 JavaScript 使用者定義函式 (UDF) 名稱。舉例來說,如果您的 JavaScript 函式程式碼是
myTransform(inJson) { /*...do stuff...*/ }
,則函式名稱就是myTransform
。如需 JavaScript UDF 範例,請參閱 UDF 範例 (https://github.com/GoogleCloudPlatform/DataflowTemplates#udf-examples)。 - firestoreHintNumWorkers:Firestore 升速節流步驟中預期工作站數量的提示。預設值為
500
。
使用者定義函式
您可以視需要撰寫使用者定義函式 (UDF) 來擴充這個範本。範本會針對每個輸入元素呼叫 UDF。元素酬載會序列化為 JSON 字串。詳情請參閱「為 Dataflow 範本建立使用者定義函式」。
函式規格
UDF 的規格如下:
- 輸入:Cloud Storage 輸入檔案中的一行文字。
- 輸出:以 JSON 字串序列化的
Entity
。
執行範本
控制台
- 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。 前往「依據範本建立工作」
- 在「工作名稱」欄位中,輸入專屬工作名稱。
- 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為
us-central1
。如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。
- 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Text Files on Cloud Storage to Firestore template。
- 在提供的參數欄位中輸入參數值。
- 按一下「Run Job」(執行工作)。
gcloud
在殼層或終端機中執行範本:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_Text_to_Firestore \ --region REGION_NAME \ --parameters \ textReadPattern=PATH_TO_INPUT_TEXT_FILES,\ javascriptTextTransformGcsPath=PATH_TO_JAVASCRIPT_UDF_FILE,\ javascriptTextTransformFunctionName=JAVASCRIPT_FUNCTION,\ firestoreWriteProjectId=PROJECT_ID,\ errorWritePath=ERROR_FILE_WRITE_PATH
更改下列內容:
JOB_NAME
: 您選擇的不重複工作名稱VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
REGION_NAME
: 您要部署 Dataflow 工作的地區,例如us-central1
PATH_TO_INPUT_TEXT_FILES
:Cloud Storage 上的輸入檔案模式JAVASCRIPT_FUNCTION
: 您要使用的 JavaScript 使用者定義函式 (UDF) 名稱舉例來說,如果您的 JavaScript 函式程式碼是
myTransform(inJson) { /*...do stuff...*/ }
,則函式名稱就是myTransform
。如需 JavaScript UDF 範例,請參閱「UDF 範例」。PATH_TO_JAVASCRIPT_UDF_FILE
: 定義要使用的 JavaScript 使用者定義函式 (UDF) 的.js
檔案 Cloud Storage URI,例如gs://my-bucket/my-udfs/my_file.js
ERROR_FILE_WRITE_PATH
:您在 Cloud Storage 上指定的錯誤檔案路徑
API
如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 projects.templates.launch
。
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/GCS_Text_to_Firestore { "jobName": "JOB_NAME", "parameters": { "textReadPattern": "PATH_TO_INPUT_TEXT_FILES", "javascriptTextTransformGcsPath": "PATH_TO_JAVASCRIPT_UDF_FILE", "javascriptTextTransformFunctionName": "JAVASCRIPT_FUNCTION", "firestoreWriteProjectId": "PROJECT_ID", "errorWritePath": "ERROR_FILE_WRITE_PATH" }, "environment": { "zone": "us-central1-f" } }
更改下列內容:
PROJECT_ID
: 您要執行 Dataflow 工作的專案 ID Google CloudJOB_NAME
: 您選擇的不重複工作名稱VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
LOCATION
: 您要部署 Dataflow 工作的地區,例如us-central1
PATH_TO_INPUT_TEXT_FILES
:Cloud Storage 上的輸入檔案模式JAVASCRIPT_FUNCTION
: 您要使用的 JavaScript 使用者定義函式 (UDF) 名稱舉例來說,如果您的 JavaScript 函式程式碼是
myTransform(inJson) { /*...do stuff...*/ }
,則函式名稱就是myTransform
。如需 JavaScript UDF 範例,請參閱「UDF 範例」。PATH_TO_JAVASCRIPT_UDF_FILE
: 定義要使用的 JavaScript 使用者定義函式 (UDF) 的.js
檔案 Cloud Storage URI,例如gs://my-bucket/my-udfs/my_file.js
ERROR_FILE_WRITE_PATH
:您在 Cloud Storage 上指定的錯誤檔案路徑
後續步驟
- 瞭解 Dataflow 範本。
- 請參閱 Google 提供的範本清單。