如何在本地环境中从 AWS Glue 目录创建动态dataframe?

0

【以下的问题经过翻译处理】 我已经使用 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 控制台上运行良好。

我真的很感激一些帮助,谢谢!

profile picture
专家
已提问 7 个月前75 查看次数
1 回答
0

【以下的回答经过翻译处理】 看起来您缺少 MySQL 驱动程序,您可以通过“依赖 jars 路径”参数。您的代码看起来没错,所以我认为错误的提示是正确的,缺少驱动程序/库。

profile picture
专家
已回答 7 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则