Ish*_*h14 6 python google-cloud-platform dataproc google-cloud-dataproc-serverless
我想在 Serverless Dataproc 上安装一些 python 包(例如:python-json-logger)。有没有办法执行初始化操作来在无服务器 dataproc 中安装 python 包?请告诉我。
小智 2
您有两个选择:
您可以在 GCR(Google 容器注册表 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创建自定义容器映像。
将下面的脚本添加到 python-file 中,它将安装所需的包,然后将该包加载到容器路径(dataproc servless)中,该文件必须保存在存储桶中,这里以秘密管理器包为例。
python-file.py
Run Code Online (Sandbox Code Playgroud)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",
batch={ "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", )
| 归档时间: |
|
| 查看次数: |
2746 次 |
| 最近记录: |