Я новичок в сервисах 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.