使用压缩文件时,您能否从 aws s3 中的 input_file_name() 获取文件名

Can you get filename from input_file_name() in aws s3 when using gunzipped files

一段时间以来一直在寻找执行此操作的答案,但似乎无法弄清楚。我已阅读 并尝试了此问题中的所有内容,但 none 有效。我正在尝试获取源 s3 存储桶中每条记录的文件名,但不断返回空白。我认为这可能与文件被压缩有关,因为它在压缩之前工作得很好。似乎无法在任何地方找到这应该是一个问题。有谁知道这是一个问题还是与我的代码有关?

谢谢!

def main():

    glue_context = GlueContext(sc.getOrCreate())


    #create a source dataframe for the bronze table
    dyf_bronze_table = glue_context.create_dynamic_frame.from_catalog(
        database=DATABASE
        , table_name=TABLE
        , groupFiles='none'
    )

    #Add file location to join postgres database on
    bronze_df = dyf_bronze_table.toDF()
    bronze_df = bronze_df.withColumn("s3_location", input_file_name())
    bronze_df.show()

问题出在我的地形文件中。我设置了

compressionType = "gzip"

format = gzip 

还有。一旦我删除了这些,文件名就被填充了。

在阅读了一些文档后,虽然我不建议压缩文件(可能使用 parquet 代替),因为当文件被压缩时它不能对它们进行分片,而不是在多个 dpus 上处理数据必须单独处理每个文件。