簡體   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