AWS Glue Spark 作业错误:"ModuleNotFoundError: You need to install pyodbc respectively the AWS Data Wrang



我使用AWS Glue Spark与python job将数据从s3同步到本地Sql Server,并使用AWS Wrangler和附加的pyodbc车轮文件。当我运行我的工作时,我得到这个错误"ModuleNotFoundError:您需要分别安装pyodbc AWS Data Wrangler包和sqlserverextra以使用sqlserver模块"

需要帮助如何分别安装pyodbc和AWS Data Wrangler包。

我尝试导入pyodbc的另一种方式是从importlib.util.find_spec("pyodbc"),但也得到相同的错误。

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import importlib
import awswrangler as wr
from awswrangler import _data_types
from awswrangler import _databases as _db_utils
from awswrangler import exceptions
from awswrangler import sqlserver

__all__ = ["connect", "read_sql_query", "read_sql_table", "to_sql"]
_pyodbc_found = importlib.util.find_spec("pyodbc")
if _pyodbc_found:
import pyodbc 
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
con = wr.sqlserver.connect(connection="glue_to_onprem_test_1", jdbc_driver_version=3.0)
df = wr.sqlserver.read_sql_query(sql="SELECT TOP 10 * FROM dbo.GlueDataSync", con=con)
con.close()

Notes for Microsoft SQL Server

awswrangler使用pyodbc与Microsoft SQL Server进行交互。要安装这个包,您需要ODBC头文件,例如,可以使用以下命令安装它:

sudo apt install unixodbc-dev
yum install unixODBC-devel

在安装这些头文件之后,您可以使用sqlserver extra安装pyodbc或awswrangler,这也将安装pyodbc:

pip install pyodbc
pip install awswrangler[sqlserver]

最后,您还需要SQL Server的正确ODBC驱动程序。您可以查看微软的文档,了解如何在您的环境中安装它们。

如果你想从AWS Lambda连接到Microsoft SQL Server,你可以构建一个单独的层,包括所需的OBDC驱动程序和pyobdc。

如果您维护自己的环境,则需要注意上述步骤。由于这个限制,与Glue作业结合使用是有限的,您需要依赖Glue本身提供的功能。

来源:https://aws-data-wrangler.readthedocs.io/en/stable/install.html

最新更新