簡體   English   中英

AWS Glue ETL作業缺少對搜尋器可見的字段

[英]AWS Glue ETL job missing fields visible to crawler

我有一個由爬網程序創建的表,該表指向存儲在s3中的某些鑲木地板文件。 從Glue數據目錄GUI中,我可以看到許多字段(53)。

當我打開ETL開發人員端點並與sagemaker筆記本連接,加載相同的表並運行printSchema時,使用以下代碼可以看到少得多的字段(36)。

from pyspark.context import SparkContext
from awsglue.context import GlueContext, DynamicFrame

# Get the right stuff
glueContext = GlueContext(SparkContext.getOrCreate())

data = glueContext.create_dynamic_frame.from_catalog(database = "my_database", table_name = "my_table")

print('Fields: ', len(data.schema().fields))
data.printSchema()

僅返回36個字段。 誰能告訴我如何訪問缺少的字段? 它似乎最常發生在稀疏的字段上。

編輯:AWS論壇上這個未解決的問題似乎是由於相同的問題-顯然PySpark試圖推斷自己的架構,而不是使用搜尋器發現的架構。

您是否嘗試過.create_dynamic_frame.from_options並直接從s3存儲桶讀取? 有時,其行為與Crawler不同。

對於鑲木地板文件,Glue使用Spark的閱讀器,因此依賴於從文件繼承的模式,而不是使用搜尋器創建的數據目錄中的模式。

如果源文件夾中的文件具有不同的架構,則Glue搜尋器會將其合並為一個架構,這使其與ETL中看到的架構有所不同。

您是否在Crawler的“輸出->配置選項(可選)”部分中嘗試了“使用表中的元數據更新所有新分區和現有分區”?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM