Обработка данных отправляет задание Hadoop через клиент Python

#python #google-cloud-platform #gcloud #google-cloud-dataproc

#python #google-cloud-platform #gcloud #google-cloud-dataproc

Вопрос:

Я пытаюсь использовать Dataproc API, пытаясь преобразовать команду gcloud в API, но я не могу найти хороший пример в документации.

 %pip install google-cloud-dataproc
  

Единственный хороший образец, который я нашел, это, который отлично работает:

 from google.cloud import dataproc_v1

client = dataproc_v1.ClusterControllerClient()

project_id = 'test-project'
region = 'global'

for element in client.list_clusters(project_id, region):   
    print('Dataproc cluster name:', element.cluster_name)
  

Мне нужно преобразовать в код Python следующую команду gcloud:

 gcloud dataproc jobs submit hadoop --cluster "${CLUSTER_NAME}" 
    --class com.mycompany.product.MyClass 
    --jars "${JAR_FILE}" -- 
    --job_venv=venv.zip 
    --job_binary_path=venv/bin/python3.5 
    --job_executes program.py 
  

Ответ №1:

Это работает:

 project_id = 'your project'
region = 'global'

# Define Job arguments:

job_args = ['--job_venv=venv.zip',
            '--job_binary_path=venv/bin/python3.5',
            '--job_executes program.py']


job_client = dataproc_v1.JobControllerClient()

# Create Hadoop Job
hadoop_job = dataproc_v1.types.HadoopJob(jar_file_uris=[JAR_FILE], main_class='com.mycompany.product.MyClass',args=job_args)

# Define Remote cluster to send Job
job_placement = dataproc_v1.types.JobPlacement()
job_placement.cluster_name = 'your_cluster_name'

# Define Job configuration
main_job = dataproc_v1.types.Job(hadoop_job=hadoop_job, placement=job_placement)

# Send job
job_client.submit_job(project_id, region, main_job)

# Monitor in Dataproc UI or perform another API call to track status