繁体   English   中英

AWS Glue 作业 - CSV 到 Parquet。 如何忽略header?

[英]AWS Glue Job - CSV to Parquet. How to ignore header?

我需要将一堆 (23) 个 CSV 个文件(源 s3)转换为镶木地板格式。 输入 CSV 包含所有文件中的标题。 当我使用 Glue 生成代码时。 output 包含 22 行 header 行,它们也在不同的行中,这意味着它忽略了第一个 header。在执行此转换时,我需要帮助来忽略所有标头。

由于我使用from_catalog function 作为输入,因此我没有任何format_options来忽略 header 行。

另外,我可以在 Glue 表中设置一个选项,即文件中存在 header 吗? 当我的工作运行时,它会自动忽略 header 吗?

我目前的部分方法如下。 我是胶水的新手。 这段代码实际上是由 Glue 自动生成的。

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "my_datalake", table_name = "my-csv-files", transformation_ctx = "datasource0")

datasink1 = glueContext.write_dynamic_frame.from_options(frame = datasource0, connection_type = "s3", connection_options = {"path": "s3://my-bucket-name/full/s3/path-parquet"}, format = "parquet", transformation_ctx = "datasink1")

在处理使用 AWS Glue 的 ETL 作业时遇到了确切的问题。

from_catalog的文档说:

  • additional_options – 可选名称-值对的集合。 可能的选项包括 AWS Glue 中 ETL 的连接类型和选项中列出的选项,endpointUrl、streamName、bootstrap.servers、security.protocol、topicName、分类和分隔符除外。

我尝试使用下面的代码片段及其与 from_catalog 的一些排列。 但对我没有任何帮助。

additional_options = {"format": "csv", "format_options": '{"withHeader": "True"}'},

go 解决此问题的一种方法是使用from_options而不是from_catalog并直接指向 S3 存储桶或文件夹。 它应该是这样的:

datasource0 = glueContext.create_dynamic_frame.from_options(
  connection_type="s3",
  connection_options={
      'paths': ['s3://bucket_name/folder_name'],
      "recurse": True,
      'groupFiles': 'inPartition'
  }, 
  format="csv", 
  format_options={
      "withHeader": True
  }, 
  transformation_ctx = "datasource0"
)

但是,如果您出于任何原因不能这样做并且想坚持使用from_catalog ,那么使用适合我的过滤器。

假设您的标头名称之一是name ,代码段可能如下所示:

datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "my_datalake", table_name = "my-csv-files", transformation_ctx = "datasource0")
filtered_df = Filter.apply(frame = datasource0, f = lambda x: x["name"] != "name")

不太确定 spark 的数据帧或胶水的动态帧如何处理 csv 标题以及为什么从目录中读取的数据在行和模式中都有标题,但这似乎通过从行中删除 header 值来解决我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM