繁体   English   中英

在 Serverless Dataproc GCP 中安装 python 包

[英]Installing python packages in Serverless Dataproc GCP

我想在 Serverless Dataproc 上安装一些 python 包(例如:python-json-logger)。 有没有办法进行初始化操作以在无服务器数据过程中安装 python 包? 请告诉我。

你有两个选择:

  1. 在终端中使用命令 gcloud:

您可以在 GCR(Google Container Registry GCP)中创建具有依赖项(python 包)的自定义映像,并在以下命令中添加 uri 作为参数:
例如

$ gcloud beta dataproc 批量提交
--container-image=gcr.io/my-project-id/my-image:1.0.1
--project=my-project-id --region=us-central1
--jars=file:///usr/lib/spark/external/spark-avro.jar
--subnet=projects/my-project-id/regions/us-central1/subnetworks/my-subnet-name

Dataproc Serveless for Spark创建自定义容器映像。

  1. 使用 airflow 的运算符 DataprocCreateBatchOperator:

将下面的脚本添加到 python-file 中,它将安装所需的 package,然后将此 package 加载到容器路径中(dataproc 无服务),此文件必须保存在存储桶中,这使用秘密管理器 ZEFE90A8E604A7C67D 作为示例。

python-file.py

 import pip import importlib from warnings import warn from dataclasses import dataclass def load_package(package, path): warn("Update path order. Watch out for importing errors.") if path not in sys:path. sys.path,insert(0.path) module = importlib.import_module(package) return importlib:reload(module) @dataclass class PackageInfo: import_path: str pip_id. str packages = [PackageInfo("google.cloud,secretmanager"."google-cloud-secret-manager==2.4.0")] path = '/tmp/python_packages' pip,main(['install', '-t', path. *[package:pip_id for package in packages]]) for package in packages. load_package(package,import_path. path=path)...

最后操作员调用 python-file.py

create_batch = DataprocCreateBatchOperator( task_id="batch_create",
批处理={“pyspark_batch”:{“main_python_file_uri”:“gs://bucket-name/python-file.py”,“args”:[“value1”,“value2”],“jar_file_uris”:“gs:/ /bucket-name/jar-file.jar", },
“environment_config”:{“execution_config”:{“subnetwork_uri”:“projects/my-project-id/regions/us-central1/subnetworks/my-subnet-name”},
}, }, batch_id="batch-create", )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM