airflow.providers.google.cloud.transfers.gcs_to_gcs

此模組包含一個 Google Cloud Storage operator。

屬性

WILDCARD

GCSToGCSOperator

將物件從一個 bucket 複製到另一個,如果需要,可以重新命名。

模組內容

airflow.providers.google.cloud.transfers.gcs_to_gcs.WILDCARD = '*'[source]
class airflow.providers.google.cloud.transfers.gcs_to_gcs.GCSToGCSOperator(*, source_bucket, source_object=None, source_objects=None, destination_bucket=None, destination_object=None, delimiter=None, move_object=False, replace=True, gcp_conn_id='google_cloud_default', last_modified_time=None, maximum_modified_time=None, is_older_than=None, impersonation_chain=None, source_object_required=False, exact_match=False, match_glob=None, **kwargs)[source]

繼承自: airflow.models.BaseOperator

將物件從一個 bucket 複製到另一個,如果需要,可以重新命名。

另請參閱

有關如何使用此 operator 的更多資訊,請參閱指南: GCSToGCSOperator

引數:
  • source_bucket – 源 Google Cloud Storage bucket,物件位於其中。(templated)

  • source_object – 要複製的 Google Cloud Storage bucket 中物件的源名稱。(templated) 您只能在 bucket 內的物件(檔名)中使用一個萬用字元。萬用字元可以出現在物件名稱內部或末尾。在 bucket 名稱末尾附加萬用字元不受支援。

  • source_objects – 要複製的 Google Cloud Storage bucket 中物件的源名稱列表。(templated)

  • destination_bucket – 物件應存放的目標 Google Cloud Storage bucket。如果 destination_bucket 為 None,則預設為 source_bucket。(templated)

  • destination_object – 目標 Google Cloud Storage bucket 中物件的目標名稱。(templated) 如果 source_object 引數中提供了萬用字元,則這是將新增到最終目標物件路徑字首。請注意,萬用字元之前的源路徑部分將被移除;如果需要保留,應將其新增到 destination_object。例如,對於字首 foo/* 和 destination_object blah/,檔案 foo/baz 將被複制到 blah/baz;要保留字首,可以將 destination_object 寫為例如 blah/foo,在這種情況下,複製的檔案將命名為 blah/foo/baz。source_objects 內的源物件也適用同樣規則。

  • move_object – 當 move_object 為 True 時,物件將被移動而不是複製到新位置。這相當於 mv 命令而非 cp 命令。

  • replace – 是否要替換現有的目標檔案。

  • delimiter – (已廢棄) 用於將結果限制為給定“資料夾”中的“檔案”。如果 source_objects = [‘foo/bah/’] 且 delimiter = ‘.avro’,則只會將“foo/bah/”資料夾中使用“.avro”作為分隔符的“檔案”複製到目標物件。

  • gcp_conn_id – (可選) 用於連線到 Google Cloud 的連線 ID。

  • last_modified_time – 指定時,只有在 last_modified_time 之後修改的物件才會被複制或移動。如果未設定 tzinfo,則假定為 UTC。

  • maximum_modified_time – 指定時,只有在 maximum_modified_time 之前修改的物件才會被複制或移動。如果未設定 tzinfo,則假定為 UTC。

  • is_older_than – 指定時,只有比指定時間(以秒為單位)舊的物件才會被複制。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – 可選的服務帳號,使用短期憑據模擬,或透過鏈式列表模擬列表中的最後一個帳號,該帳號的 access_token 將被用於請求。如果設定為字串,則該帳號必須向原始帳號授予 Service Account Token Creator IAM 角色。如果設定為序列,列表中的身份必須向直接前置的身份授予 Service Account Token Creator IAM 角色,列表中的第一個帳號將此角色授予原始帳號 (templated)。

  • source_object_required – 當源物件不存在時是否引發異常。當源物件是資料夾或模式時,此引數無效。

  • exact_match – 指定時,只複製源物件(檔名)的完全匹配項。

  • match_glob (str | None) – (可選) 根據給定的 glob 模式字串過濾物件 ( 例如, '**/*/.json')

示例:

以下 Operator 會將 data bucket 中名為 sales/sales-2017/january.avro 的單個檔案複製到 data_backup bucket 中名為 copied_sales/2017/january-backup.avro 的檔案。

copy_single_file = GCSToGCSOperator(
    task_id="copy_single_file",
    source_bucket="data",
    source_objects=["sales/sales-2017/january.avro"],
    destination_bucket="data_backup",
    destination_object="copied_sales/2017/january-backup.avro",
    exact_match=True,
    gcp_conn_id=google_cloud_conn_id,
)

以下 Operator 會將 data bucket 中 sales/sales-2017 資料夾(即名稱以此字首開頭的所有檔案)中的所有 Avro 檔案複製到 data_backup bucket 中的 copied_sales/2017 資料夾。

copy_files = GCSToGCSOperator(
    task_id='copy_files',
    source_bucket='data',
    source_objects=['sales/sales-2017'],
    destination_bucket='data_backup',
    destination_object='copied_sales/2017/',
    match_glob='**/*.avro'
    gcp_conn_id=google_cloud_conn_id
)

Or ::

copy_files = GCSToGCSOperator(
    task_id='copy_files',
    source_bucket='data',
    source_object='sales/sales-2017/*.avro',
    destination_bucket='data_backup',
    destination_object='copied_sales/2017/',
    gcp_conn_id=google_cloud_conn_id
)

以下 Operator 會將 data bucket 中 sales/sales-2017 資料夾(即名稱以此字首開頭的所有檔案)中的所有 Avro 檔案移動到 data_backup bucket 中的相同資料夾,並在過程中刪除原始檔案。

move_files = GCSToGCSOperator(
    task_id="move_files",
    source_bucket="data",
    source_object="sales/sales-2017/*.avro",
    destination_bucket="data_backup",
    move_object=True,
    gcp_conn_id=google_cloud_conn_id,
)
以下 Operator 會將 data bucket 中 sales/sales-2019

sales/sales-2020 資料夾中的所有 Avro 檔案移動到 data_backup bucket 中的相同資料夾,並在過程中刪除原始檔案。

move_files = GCSToGCSOperator(
    task_id="move_files",
    source_bucket="data",
    source_objects=["sales/sales-2019/*.avro", "sales/sales-2020"],
    destination_bucket="data_backup",
    delimiter=".avro",
    move_object=True,
    gcp_conn_id=google_cloud_conn_id,
)
template_fields: collections.abc.Sequence[str] = ('source_bucket', 'source_object', 'source_objects', 'destination_bucket', 'destination_object',...[source]
ui_color = '#f0eee4'[source]
source_bucket[source]
source_object = None[source]
source_objects = None[source]
destination_bucket = None[source]
destination_object = None[source]
delimiter = None[source]
move_object = False[source]
replace = True[source]
gcp_conn_id = 'google_cloud_default'[source]
last_modified_time = None[source]
maximum_modified_time = None[source]
is_older_than = None[source]
impersonation_chain = None[source]
source_object_required = False[source]
exact_match = False[source]
match_glob = None[source]
execute(context)[source]

在建立 operator 時派生。

Context 是與渲染 jinja 模板時使用的字典相同。

有關更多 context,請參閱 get_template_context。

get_openlineage_facets_on_complete(task_instance)[source]

實現 _on_complete,因為 execute 方法會對內部進行預處理。

這意味著我們無需規範化 self.source_object 和 self.source_objects、目標 bucket 等。

此條目有幫助嗎?