如何在本地环境中从 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
EXPERTE
gefragt vor 5 Monaten61 Aufrufe
1 Antwort
0

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

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen