AWS GlueContext не инициализируется - PullRequest
0 голосов
/ 08 ноября 2019

Я новичок в сервисах AWS и glue, пытаюсь работать с pycharm, и у меня есть класс python, который читает данные из местоположения S3, что работает нормально. Класс python подключается к DevEndPoint и выполняет свою работу. Я хочу создать аналогичную практику на своем ноутбуке без подключения к Devendpoint (как мы делаем для приложения spark-hadoop с использованием winutils), но когда я запускаю приложение на pycharm, я получаю ошибку ниже:

C:\Users\****\PycharmProjects\AWSEndpoint\venv\Scripts\python.exe C:/Users/*****/PycharmProjects/AWSEndpoint/src/StackOver.py
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Traceback (most recent call last):
  File "C:/Users/*****/PycharmProjects/AWSEndpoint/src/StackOver.py", line 9, in <module>
    glueContext = GlueContext(sc)
  File "C:\Python\lib\awsglue\context.py", line 45, in __init__
    self._glue_scala_context = self._get_glue_scala_context(**options)
  File "C:\Python\lib\awsglue\context.py", line 66, in _get_glue_scala_context
    return self._jvm.GlueContext(self._jsc.sc())
TypeError: 'JavaPackage' object is not callable

Process finished with exit code 1

нижеэто код, который я использую:

from py4j.java_gateway import java_import
from pyspark.sql.types import StructField, StructType, StringType, Row
from src.readConfig import read_config
from pyspark.sql.types import StringType

# spark = SparkSession.builder.appName('abc').getOrCreate()

from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

newconf = sc._conf.set("spark.sql.catalogImplementation", "in-memory")
sc = sc.getOrCreate(newconf)
glueContext = GlueContext(SparkContext.getOrCreate())


def main():
    # glueContext = GlueContext(SparkContext.getOrCreate())
    logger = glueContext.get_logger()
    logger.info("Job Started")
     inputDf = glueContext.sparkSession.read.csv(input_dir)
     print(inputDf.take(3))


if __name__ == "__main__":
    main()

Любое предложение будет полезным, я перепробовал все документы AWS.

1 Ответ

0 голосов
/ 11 ноября 2019

Возможно, попробуйте использовать следующую документацию для локальной разработки клея: https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html

...