Бессерверное подключение AWS EMR к jdbc SQL Server

Я подключался к SQL Server с помощью приложения EMR Serverless v-6.8.0 для Spark. Итак, я протестировал код на локальной машине, а также на ec2, но когда я запустил код на этом бессерверном кластере, я получил ошибку.

Примечание. В моей группе безопасности VPC включены все порты трафика.

Итак, это моя работа по отправке,

          applicationId=app_id,
    executionRoleArn="my-role",
    jobDriver={
        "sparkSubmit": {
            "entryPoint": "s3://emr-studio-rts/scripts/ms-sql-fetch.py",
            "entryPointArguments": ["s3://emr-studio-rts/output"],
            "sparkSubmitParameters": "--jars https://emr-studio-rts.s3.us-east-2.amazonaws.com/jars/sqljdbc42.jar --conf spark.executor.cores=1 --conf spark.executor.memory=4g --conf spark.driver.cores=1 --conf spark.driver.memory=4g --conf spark.executor.instances=1",
        }
    },
    configurationOverrides={
        "monitoringConfiguration": {
            "s3MonitoringConfiguration": {"logUri": "s3://emr-studio-rts/logs"}
        }
    },
)

Теперь я могу показать ошибку как для строки

      spark = SparkSession\
        .builder\
        .appName('test-db') \
        .config('spark.driver.extraClassPath', 'https://emr-studio-rts.s3.us-east-2.amazonaws.com/jars/sqljdbc42.jar') \
        .config('spark.executor.extraClassPath', 'https://emr-studio-rts.s3.us-east-2.amazonaws.com/jars/sqljdbc42.jar') \
        .config("spark.executor.cores", "1") \
        .getOrCreate()

#read table data into a spark dataframe
    df1 = spark.read.format("jdbc") \
        .option("url", f"jdbc:sqlserver://{my_host}:1433;databaseName={my_database};") \
        .option("dbtable", table_name) \
        .option("user", my_user) \
        .option("password", my_password) \
        .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
        .load()

следующее,

Сведения о статусе: задание не выполнено, проверьте полные журналы в настроенном месте ведения журналов. ExitCode: 1. Несколько последних исключений: : com.microsoft.sqlserver.jdbc.SQLServerException: соединение TCP/IP с хостом 3.12.0.70, порт 1433 не выполнено. Ошибка: «Время ожидания подключения истекло: нет дополнительной информации. Проверьте свойства подключения. Убедитесь, что экземпляр SQL Server работает на хосте и принимает TCP/IP-подключения через порт. Убедитесь, что TCP-подключения к порту не заблокированы. брандмауэром.». py4j.protocol.Py4JJavaError: Произошла ошибка при вызове o93.load.

0 ответов

Другие вопросы по тегам