我已经创建了一个 Sagemaker 笔记本来开发 AWS Glue 作业,但在运行提供的示例(“使用 AWS Glue 加入、过滤和加载关系数据”)时,出现以下错误:
Does anyone know what I've setup wrong/haven't setup to cause the import to not work?
我正在使用 SQLAlchemy 连接到 SQL Server 数据库。
我试图从 python 脚本将一个对象插入到表中,但失败了。我收到错误:
(pyodbc.DataError) ('22008', '[22008] [Microsoft][ODBC SQL Server Driver]Datetime field overflow (0) (SQLExecDirectW)')
Run Code Online (Sandbox Code Playgroud)
看起来这是由以下日期时间对象引起的:
datetime.datetime(214, 7, 21, 0, 0)
Run Code Online (Sandbox Code Playgroud)
...那是 214 年 7 月 21 日
SQL Server 表中对应的日期时间字段的类型为 datetime2。
看起来从 python/SQLAlchemy 到 SQL Server 的转换并未在年初值中添加“0”。我通过以下事实证实了这一点:我可以使用带或不带前导“0”的 INSERT 语句手动将此日期添加到 SQL Server。
有没有办法强制日期的年份部分采用正确的格式?或者这是由其他原因引起的?
更新: 从https://docs.sqlalchemy.org/en/latest/dialects/mssql.html我发现您可以将列的类型指定为 DATETIME2 (对于 MS SQL),并且我已经更新了对象映射因此。
所以之前是:
from base import Base
from sqlalchemy import Column, Integer, String, Numeric, DateTime
class Results(Base):
__tablename__ = 'Result'
dateTimeMinValue = Column(DateTime)
dateTimeMaxValue = Column(DateTime) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用toDF和fromDF函数将数据帧转换为动态帧(https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame .html#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-fromDF)按照以下代码片段:
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
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)
## @type: DataSource
## @args: [database = "test-3", table_name = "test", transformation_ctx = "datasource0"]
## @return: datasource0
## @inputs: []
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "test-3", table_name = "test", transformation_ctx …Run Code Online (Sandbox Code Playgroud)