【以下的问题经过翻译处理】 我已经使用 Docker 容器执行了一些 AWS Glue 3.0 版作业测试,详见 [此处](https://aws.amazon.com/blogs/big-data/develop-and-test-aws-glue-version-3-0 -jobs-locally-using-a-docker-container/)。
以下代码输出两个列表,每个连接一个,其中包含数据库中表的名称:
import boto3
db_name_s3 = "s3_connection_db"
db_name_mysql = "glue_catalog_mysql_connection_db"
def retrieve_tables(database_name):
session = boto3.session.Session()
glue_client = session.client("glue")
response_get_tables = glue_client.get_tables(DatabaseName=database_name)
return response_get_tables
s3_tables_list = [table_dict["Name"] for table_dict in retrieve_tables(db_name_s3)["TableList"]]
mysql_tables_list = [table_dict["Name"] for table_dict in retrieve_tables(db_name_mysql)["TableList"]]
print(f"These are the tables from {db_name_s3} db: {s3_tables_list}\n")
print(f"These are the tables from {db_name_mysql} db {mysql_tables_list}")
现在,我尝试以这种方式使用 from_catalog 方法创建一个动态dataframe:
import sys
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue.dynamicframe import DynamicFrame
source_activities = glueContext.create_dynamic_frame.from_catalog(
database = db_name,
table_name =table_name
)
当 database="s3_connection_db"
时,一切正常,但是,当我设置 database="glue_catalog_mysql_connection_db"
时,出现以下错误:
Py4JJavaError: An error occurred while calling o45.getDynamicFrame.
: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
我知道这个问题与我试图从 mysql 表中获取数据这一事实有关,但我不确定如何解决这个问题。顺便说一句,该作业在 Glue 控制台上运行良好。
我真的很感激一些帮助,谢谢!