Обратите внимание, что вы должны предоставить действительный URL базы данных, а не localhost.Я полагаю, что ваш ноутбук Jupyter был запущен локально на ноутбуке, в той же локальной среде, где работает и MySQL.
AWS Glue работает в среде AWS и за сценой запускает количество экземпляров EC2 в зависимости от конфигурации DPU.Если ваш URL-адрес настроен как LOCALHOST, то экземпляр EC2, на котором выполняется код pyspark, будет искать базу данных mysql на том же узле.
Убедитесь, что у вас есть действительный общедоступный IP-адрес для базы данных mysql,и попытайтесь установить соединение в AWS Glue, как это предлагается bdcloud, и повторите попытку.Если вы не хотите создавать соединение, вы можете жестко закодировать параметры соединения в коде и повторить попытку.Если вы не можете получить общедоступный IP-адрес для установленной базы данных mysql, возможно, вы можете попробовать настроить RDS Mysql на AWS и использовать его для тестирования.
Пример фрагмента кода:
conn = mysql.connector.connect(host=url, user=uname, password=pwd, database=dbase)
cur = conn.cursor()
insertQry = "INSERT INTO emp (id, emp_name, dept, designation, address1, city, state, active_start_date, is_active) SELECT (SELECT coalesce(MAX(ID),0) + 1 FROM atlas.emp) id, tmp.emp_name, tmp.dept, tmp.designation, tmp.address1, tmp.city, tmp.state, tmp.active_start_date, tmp.is_active from EMP_STG tmp ON DUPLICATE KEY UPDATE dept=tmp.dept, designation=tmp.designation, address1=tmp.address1, city=tmp.city, state=tmp.state, active_start_date=tmp.active_start_date, is_active =tmp.is_active ;"
n = cur.execute(insertQry)
print (" CURSOR status :", n)
Пожалуйстасм. раздел «Клеевые соединения AWS»: