0

我正在使用 AWS Glue Spark 和 python 作业将数据从 s3 同步到本地 Sql Server,并使用 AWS Wrangler 和附加的 pyodbc 轮文件。当我运行我的工作时,我收到此错误“ModuleNotFoundError:您需要分别安装 pyodbc AWS Data Wrangler 包以及sqlserver使用 sqlserver 模块的额外内容”。

需要有关如何分别使用 AWS Data Wrangler 软件包安装 pyodbc 的帮助。

我尝试导入 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()
4

1 回答 1

0

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 驱动程序。您可以查看 Microsoft 的文档,了解如何在您的环境中安装它们。

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

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

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

于 2021-07-11T14:45:08.883 回答