如何在本地环境中从 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
전문가
질문됨 5달 전61회 조회
1개 답변
0

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

profile picture
전문가
답변함 5달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인