文件元數據列
請注意
在Databricks Runtime 10.5及以上版本中可用。
方法可以獲取輸入文件的元數據信息_metadata
列。的_metadata
列是隱藏的列,並可用於所有輸入文件格式。包括_metadata
列,您必須在查詢中顯式引用它。
如果數據源包含名為_metadata
,查詢將返回來自數據源的列,而不是文件元數據。
警告
中可以添加新字段_metadata
列。以防止模式演化錯誤_metadata
列更新後,Databricks建議從查詢中的列中選擇特定字段。看到例子.
支持元數據
的_metadata
列是結構體
包含以下字段:
的名字 |
類型 |
描述 |
例子 |
---|---|---|---|
file_path |
|
輸入文件的路徑。 |
|
file_name |
|
輸入文件的名稱及其擴展名。 |
|
file_size |
|
輸入文件的長度,以字節為單位。 |
628 |
file_modification_time |
|
輸入文件的最後修改時間戳。 |
|
例子
在基本的基於文件的數據源閱讀器中使用
df=火花.讀\.格式(“csv”)\.模式(模式)\.負載(“dbfs: / tmp / *”)\.選擇(“*”,“_metadata”)顯示(df)“‘結果:+---------+-----+----------------------------------------------------+| name | age | _metadata |+=========+=====+====================================================+| | | {|| | | "file_path": "dbfs:/tmp/ f2 .csv", | | || Debbie | 18 | "file_name": " 0.csv", | .csv"| | | "file_size": 12, || | | "file_modification_time": " 21-07-02 01:05:21" | . | | | "file_modification_time": " 21007-02 01:05:21| | |} |+---------+-----+----------------------------------------------------+| | | {|| | | "file_path": "dbfs:/tmp/f1.csv", | | || Frank | 24 | "file_name": "f1.csv", | .csv"| | | "file_size": 12, || | | "file_modification_time": " 21-12-20 02:06:21" || | |} |+---------+-----+----------------------------------------------------+“‘
瓦爾df=火花.讀.格式(“csv”).模式(模式).負載(“dbfs: / tmp / *”).選擇(“*”,“_metadata”)顯示(df_population)/ *結果:+---------+-----+----------------------------------------------------+| name | age | _metadata |+=========+=====+====================================================+| | | {|| | | "file_path": "dbfs:/tmp/ f2 .csv", | | || Debbie | 18 | "file_name": " 0.csv", | .csv"| | | "file_size": 12, || | | "file_modification_time": " 21-07-02 01:05:21" | . | | | "file_modification_time": " 21007-02 01:05:21| | |} |+---------+-----+----------------------------------------------------+| | | {|| | | "file_path": "dbfs:/tmp/f1.csv", | | || Frank | 24 | "file_name": "f1.csv", | .csv"| | | "file_size": 10, || | | "file_modification_time": " 21-12-20 02:06:21" || | |} |+---------+-----+----------------------------------------------------+* /
選擇特定的字段
火花.讀\.格式(“csv”)\.模式(模式)\.負載(“dbfs: / tmp / *”)\.選擇(“_metadata.file_name”,“_metadata.file_size”)
火花.讀.格式(“csv”).模式(模式).負載(“dbfs: / tmp / *”).選擇(“_metadata.file_name”,“_metadata.file_size”)
使用過濾器
火花.讀\.格式(“csv”)\.模式(模式)\.負載(“dbfs: / tmp / *”)\.選擇(“*”)\.過濾器(上校(“_metadata.file_name”)= =點燃(“test.csv”))
火花.讀.格式(“csv”).模式(模式).負載(“dbfs: / tmp / *”).選擇(“*”).過濾器(上校(“_metadata.file_name”)= = =點燃(“test.csv”))
在自動加載器中使用
火花.readStream\.格式(“cloudFiles”)\.選項(“cloudFiles.format”,“csv”)\.模式(模式)\.負載(“s3: / /桶/ csvData”)\.選擇(“*”,“_metadata”)\.writeStream\.格式(“δ”)\.選項(“checkpointLocation”,checkpointLocation)\.開始(targetTable)
火花.readStream.格式(“cloudFiles”).選項(“cloudFiles.format”,“csv”).模式(模式).負載(“s3: / /桶/ csvData”).選擇(“*”,“_metadata”).writeStream.格式(“δ”).選項(“checkpointLocation”,checkpointLocation).開始(targetTable)