当前位置: 首页 > 知识库问答 >
问题:

AWS粘合作业书签为csv文件生成重复项

严兴言
2023-03-14

我们每天上午11点从供应商收到1个s3桶中的csv文件。我在上午11:30使用Glue将此文件转换为拼花格式。

我已启用作业书签不处理已处理的文件。尽管如此,我看到一些文件正在重新处理,从而创建重复文件。

我阅读了这些问题和答案AWS Glue Bookmark为拼花地板制作副本和AWS Glue Job书签说明

他们很好地理解了工作书签,但仍然没有解决这个问题。

AWS留档表示,它支持CSV文件为AWS留档添加书签。

想知道是否有人帮助我了解可能存在的问题以及可能的解决方案:)

编辑:

按照Prabhakar的要求在此处粘贴示例代码

staging_database_name = "my-glue-db"
s3_target_path = "s3://mybucket/mydata/"


"""
 'date_index': date location in the file name
 'date_only': only date column is inserted
 'date_format': format of date
 'path': sub folder name in master bucket
"""

#fouo classified files
tables_spec = {
'sample_table': {'path': 'sample_table/load_date=','pkey': 'mykey', 'orderkey':'myorderkey'}
}

spark_conf = SparkConf().setAll([
  ("spark.hadoop.fs.s3.enableServerSideEncryption", "true"),
  ("spark.hadoop.fs.s3.serverSideEncryption.kms.keyId", kms_key_id)
])
sc = SparkContext(conf=spark_conf)

glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

for table_name, spec in tables_spec.items():
    datasource0 = glueContext.create_dynamic_frame.from_catalog(database=database_name,
                                                                table_name=table_name,
                                                                transformation_ctx='datasource0')

    resolvechoice2 = ResolveChoice.apply(frame=datasource0, choice="make_struct", transformation_ctx='resolvechoice2')

    # Create spark data frame with input_file_name column
    delta_df = resolvechoice2.toDF().withColumn('ingest_datetime', lit(str(ingest_datetime)))

    date_dyf = DynamicFrame.fromDF(delta_df, glueContext, "date_dyf")
    master_folder_path1 = os.path.join(s3_target_path, spec['path']).replace('\\', '/')

    master_folder_path=master_folder_path1+load_date
    datasink4 = glueContext.write_dynamic_frame.from_options(frame=date_dyf,
                                                            connection_type='s3',
                                                            connection_options={"path": master_folder_path},
                                                            format='parquet', transformation_ctx='datasink4')
job.commit()

共有1个答案

司寇凯
2023-03-14

与AWS支持工程师交谈时,她提到,她能够重现该问题,并已向Glue技术团队提出解决方案。

尽管如此,我还是迫不及待地等待他们修复bug,并采取了不同的方法

解决方案:

  1. 禁用粘贴书签
  2. 在Glue job将csv文件转换为拼花后,我将csv文件移动到S3桶中的不同位置
 类似资料:
  • 如标题所示。我想我记得那是胶水作业生成单个csv输出文件而不是多个输出文件的某种选项,这是特定于某些胶水配置的,独立于任何apache火花相关功能。实现这一点需要对pyspark文件进行哪些设置更改?提前感谢日志

  • 我有相对简单的任务要做,但要与最好的AWS服务组合一起努力实现这一目标: 我有一个简单的java程序(由第三方提供-我不能修改它,只是使用它),我可以在任何地方运行<code>java-jar——目标位置“本地磁盘上的路径”。该程序一旦执行,将在本地磁盘上创建csv文件,路径定义为 创建文件后,我需要将其上传到S3 我目前的做法是使用安装了 Java 的专用 EC2 实例,第一点由 ,第二点使用

  • 我一直试图将几个csv文件合并成一个,但它显示出一些错误。我是python新手,非常感谢您的帮助。 以下是我的代码: 错误显示为:

  • 在分区的拼花文件上运行粘合作业时,我遇到以下错误,无法推断拼花的模式。必须手动指定 我已经设置了我的爬虫并成功获取了拼花文件的模式。我可以在Athena中查看数据。我已经在我的目标Redshift上手动创建了模式。 如果我的所有数据都只在一个文件夹中,我可以通过GLUE将文件加载到Redshift中。但是当我指向具有嵌套文件夹的文件夹时,例如文件夹X-有04和05-GLUE作业失败并显示消息无法推

  • 问题内容: 我有一些具有相同列标题的CSV文件。例如 文件A 文件B 我想将其合并,以便将数据合并到一个文件中,文件头位于顶部,但其他任何地方都没有文件头。 什么是实现此目标的好方法? 问题答案: 这应该工作。它检查要合并的文件是否具有匹配的头。否则将引发异常。异常处理(关闭流等)已作为练习。

  • 本文向大家介绍python:pandas合并csv文件的方法(图书数据集成),包括了python:pandas合并csv文件的方法(图书数据集成)的使用技巧和注意事项,需要的朋友参考一下 数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析。 两张表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformation.csv: