這是一個優雅,它使用isDeltaTable()從DeltaTableUtils和dbutils。
進口org.apache.spark.sql.delta.DeltaTableUtils val s3Path = " s3: / /桶/文件夾”/ /得到所有文件夾的列表在s3路徑val文件夾= dbutils.fs.ls (s3Path) . map (_.path) / /過濾掉任何val nonDeltaFolders =δ表文件夾的文件夾。過濾器(path = > ! DeltaTableUtils.isDeltaTable(路徑))/ /打印的結果列表文件夾nonDeltaFolders.foreach println ()
注意:這個也可以在python(包DeltaTableUtils DeltaTable)
感謝和問候,
Nandini
你好@Ovidiu Eremia,
過濾在S3文件夾包含三角洲表,您可以尋找特定的文件與三角洲相關聯表。三角洲湖將其元數據存儲在一個隱藏的文件夾命名
_delta_log,位於三角洲的根表。所以,你可以檢查這個文件夾。
在以下代碼中,我們首先得到S3 bucket和對象在指定的前綴。然後我們隻過濾掉那些對象代表三角洲表通過檢查,如果他們與_delta_log /鍵結束。最後,我們從三角洲中提取文件夾名字對象路徑和打印的文件夾列表包含三角洲表。
進口boto3 s3 = boto3.resource (s3) bucket_name = =“your-bucket-name”前綴的路徑/ /文件夾# s3 bucket和對象在指定的前綴桶= s3.Bucket (bucket_name)對象= bucket.objects.filter(前綴=前綴)#隻過濾對象代表三角洲表delta_objects = (obj。關鍵在對象obj如果obj.key.endswith (_delta_log /)] #提取文件夾名稱從三角洲對象路徑delta_folders = [obj.split (“_delta_log /”) [0] obj delta_objects)打印(delta_folders)
引用:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/collections.html
希望這個有幫助。
感謝和問候,
Nandini
這是一個優雅,它使用isDeltaTable()從DeltaTableUtils和dbutils。
進口org.apache.spark.sql.delta.DeltaTableUtils val s3Path = " s3: / /桶/文件夾”/ /得到所有文件夾的列表在s3路徑val文件夾= dbutils.fs.ls (s3Path) . map (_.path) / /過濾掉任何val nonDeltaFolders =δ表文件夾的文件夾。過濾器(path = > ! DeltaTableUtils.isDeltaTable(路徑))/ /打印的結果列表文件夾nonDeltaFolders.foreach println ()
注意:這個也可以在python(包DeltaTableUtils DeltaTable)
感謝和問候,
Nandini