Чтение файла конфигурации в AWS Glue - PullRequest
0 голосов
/ 12 октября 2018

Я создал конечную точку разработчика Glue для проверки своего кода перед развертыванием в AWS Glue.Ниже вы найдете скриншот архитектуры проекта. Макет проекта в gluelibrary / есть config.ini Я могу успешно отладить код и запустить его до конца.Способ вызова библиотеки в среде DEV выглядит следующим образом:

Dev ENV

import sys
import os
import time
from configobj import ConfigObj
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import boto3

config = ConfigObj('/home/glue/scripts/gluelibrary/config.ini')

Этот процесс успешно находит все переменные, которые я определил в файле конфигурации, и завершает работу.с 'кодом выхода 0'

Консоль

Примечание: разработанная мной библиотека была .zipped и добавлена ​​в корзину s3, где я сказал Glue Job искать файл .zip.

Однако, когда я нахожусь в Glue Console и пытаюсь реализовать тот же код (за исключением пути к файлу), я получаю сообщение об ошибке:

import sys
import os
import time
from configobj import ConfigObj
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import boto3

from gluelibrary.helpers import get_date
from gluelibrary import
from gluelibrary.boto3_.s3_utils import delete_data_in_sub_directories, check_for_empty_bucket
from gluelibrary.boto3_.s3_utils import replace_data_in_sub_directories, check_bucket_existence
print('starting job.')

print(os.getcwd())

config = ConfigObj('/home/glue/gluelibrary/config.ini')

--conf spark.hadoop.yarn.resourcemanager.connect.max-wait.ms = 60000 --conf spark.hadoop.fs.defaultFS = hdfs: //IP_ADDRESS.internal: 8020 --conf spark.hadoop.yarn.resourcemanager.address = IP_ADDRESS.internal: 8032 --conf spark.dynamicAllocation.enabled = true --conf spark.shuffle.service.enabled = true --conf spark.dynamicAllocation.minExecutors = 1 --conf spark.dynamicAllocation.maxExecutors = 18 --conf spark.executor.memory = 5g --conf spark.executor.cores = 4 --JOB_ID j_26c2ab188a2d8b7567006809c549f5894333cd38f191f58ae1f2258475ed03d1 --enable-метрики --extra-Py-файлов s3: //BUCKET_NAME/Python/gluelibrary.zip --JOB_RUN_ID jr_0292d34a8b82dad6872f5ee0cae5b3e6d0b1fbc503dca8a62993ea0f3b38a2ae--scriptLocation s3: // BUCKET_NAME / admin / JOB_NAME --job-bookmark-option job-bookmark-enable - Python -job-language --TempDir s3: // BUCKET_NAME / admin --JOB_NAME JOB_NAME YARN_RM_DNS = IP_ADDRESS.internal Обнаруженный регион us-east-2 JOB_NAME = JOB_NAME Указание us-east-2 при копировании сценария.Завершено 6,6 КиБ / 6,6 КиБ (70,9 КиБ / с), осталось 1 скачивание файлов: s3: // BUCKET_NAME / admin / JOB_NAME to ./script_2018-10-12-14-57-20.py SCRIPT_URL = / tmp/g-6cad80fb460992d2c24a6f476b12275d2a9bc164-362894612904031505/script_2018-10-12-14-57-20.py

1 Ответ

0 голосов
/ 28 марта 2019

Если вам нужен доступ к дополнительным файлам из вашего задания Glue, вам необходимо:

  1. Скопировать каждый файл в папку на S3, к которой Glue имеет доступ к

  2. Включите полный ключ S3 каждого файла, разделенных запятыми, в extra-files специальный параметр вашей работы

Затем добавится клейэти файлы с параметром --files, заданным для spark-submit, и вы сможете получить к ним доступ из своего задания Spark, как если бы они находились в рабочем каталоге.

В вашем примере вы сможете простоделать:

config = ConfigObj("config.ini")
...