pyspark AWS Glue无法将UUID插入Postgres数据库

kknvjkwl  于 2023-01-08  发布在  Spark
关注(0)|答案(1)|浏览(160)

我在Aurora Postgres DB中创建了一个表,其中包含一个UUID列id,并使用以下代码创建了一个AWS Glue Studio作业:

schema = ['id']
rdd = [[str(uuid.uuid4())]]
dyf = glueContext.create_dynamic_frame_from_rdd(rdd, 'dyf', schema=schema)
glueContext.write_from_options(frame_or_dfc=dyf, connection_type='postgresql', connection_options={...})

报告了一个错误:
2023-01-05 20:27:35,757信息[任务结果获取器-0]调度器.任务集管理器(日志记录.scala:logInfo(57)):在www.example.com上的阶段0.0(TID 36)中丢失任务35.110.248.10.50,执行器1:批处理更新异常(批处理条目0插入到“数据”中)。t(“id”)值(“6 f2 ac 9 cd-c6 a9 -4798-bc 9 b-59 c8 a3 d37 ca 1”)被中止:错误:列“id”的类型为uuid,但表达式的类型为字符变化提示:您将需要重写或强制转换表达式。
我尝试了rdd = [[uuid.uuid4()]],但似乎Spark不支持uuid
递归错误:调用Python对象时超出最大递归深度

INSERT INTO "data"."t" ("id") VALUES ('6f2ac9cd-c6a9-4798-bc9b-59c8a3d37ca1')

奇怪的是我可以从SQL客户端成功运行SQL语句。这是AWS Glue中的bug吗?

flseospp

flseospp1#

通过向connection_options添加项目解决了问题

connection_options = {
    ...
    'stringtype': 'unspecified',
}

相关问题