在胶水中使用ResolveChoice

问题描述

我能够创建一个小的粘合作业,以将数据从一个S3存储桶中提取到另一个存储桶中,但并不清楚下面代码中的最后几行。

applymapping1 = ApplyMapping.apply(frame = datasource_lk,mappings = [("row_id","bigint","row_id","bigint"),("Quantity","long","Quantity","long"),("Category","string","Category","string") ],transformation_ctx = "applymapping1")

selectfields2 = SelectFields.apply(frame = applymapping1,paths = ["row_id","Category"],transformation_ctx = "selectfields2")

resolvechoice3 = ResolveChoice.apply(frame = selectfields2,choice = "MATCH_CATALOG",database = "mydb",table_name = "order_summary_csv",transformation_ctx = "resolvechoice3")

datasink4 = glueContext.write_dynamic_frame.from_catalog(frame = resolvechoice3,transformation_ctx = "datasink4")
job.commit()
  1. 从上面的代码片段中,“ ResolveChoice”的用途是什么?是强制性的吗?
  2. 当我运行此作业时,它已在目的地(order_summary.csv)中创建了一个新的文件夹和文件(带有一些随机文件名),并导入了数据,而不是直接将其导入驻留在我的order_summary_csv表(一个CSV文件)中S3文件夹。 spark(glue)是否可以将数据提取到所需的CSV文件中?

解决方法

我认为这个 ResolveChoice apply 方法调用已经过时,因为文档中没有像“MATCH_CATALOG”这样的选择

https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-ResolveChoice.html

ResolveChoice 背后的总体思路是,如果您有包含 int 值和字符串值的字段 - 您应该解决如何处理该字段:

  1. 将其转换为 Int
  2. 将其转换为字符串
  3. 保留两者并在结果数据集中创建 2 列