[英]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.