使用azure数据湖存储和azure分析是我的新手。
是否有一种方法可以获取存储在Azure Datalake存储中的文件的哈希值?这样我就可以分析数据是否已更改
我有一堆结构相似的输入文件
/输入/
/输入/
我能够在本地获取Get-FileHash
,但找不到ADLS的任何内容或与此类似的远程内容
Get-FileHash
"Input/Client-01/*.csv" -Algorithm MD5 | ConvertTo-Json >> statistics.json
生成类似哈希的
[
{
"Algorithm": "MD5",
"Hash": "BA961B4B72DC602C2D2CA2B13EFC09DB",
"Path": "Input/Client-01/Input01.csv"
},
{
"Algorithm": "MD5",
"Hash": "B0528707D4E689EEEFE1AA1811063014",
"Path": "Input/Client-02/Input01.csv"
},
{
"Algorithm": "MD5",
"Hash": "60D71494355E7EE941782F1BE2969F3C",
"Path": "Input/Client-02/Input02.csv"
}
]
我能够使用
获得更多详细信息Get-AzureRmDataLakeStoreChildItem -Account
$datalakeStoreName -Path
$path | ConvertTo-Json
这将导致
{
"LastWriteTime": "\/Date(1534185132238)\/",
"LastAccessTime": "\/Date(1534185132180)\/",
"Expiration": null,
"Name": "Input01.csv",
"Path": "/Input/Client-01/",
"AccessTime": 1534185132180,
"BlockSize": 268435456,
"ChildrenNum": null,
"ExpirationTime": null,
"Group": "e045d366-777b-4e7a-a01d-79dbf0e28a61",
"Length": 127,
"ModificationTime": 1534185132238,
"Owner": "3bb6c9c4-da61-4cc2-b6ef-f4739adafff5",
"PathSuffix": "Input01.csv",
"Permission": "770",
"Type": 0,
"AclBit": true
}
ADLS nuget支持少数端点。我专门查看了DirectoryEntry
,但是该模型并未公开其他端点中可用的BlockSize
:(
private static void PrintDirectoryEntry(DirectoryEntry entry)
{
Console.WriteLine($"Name: {entry.Name}");
Console.WriteLine($"FullName: {entry.FullName}");
Console.WriteLine($"Length: {entry.Length}");
Console.WriteLine($"Type: {entry.Type}");
Console.WriteLine($"User: {entry.User}");
Console.WriteLine($"Group: {entry.Group}");
Console.WriteLine($"Permission: {entry.Permission}");
Console.WriteLine($"Modified Time: {entry.LastModifiedTime}");
Console.WriteLine($"Last Accessed Time: {entry.LastAccessTime}");
Console.WriteLine();
}
https://docs.microsoft.com/en-us/rest/api/datalakestore/webhdfs-filesystem-apis
我能够使用op=LISTSTATUS
documentation link来获得同时具有FileStatuses
和blocksize
的{{1}}。所以这很有帮助
length
答案 0 :(得分:0)
您是要确定文件是否已更改,还是要实际确定文件中已更改的行?如果要确定行更改,请使用ADLA作业运行创建行哈希的U-SQL脚本或函数。
如果要确定文件是否已更改,我怀疑您需要运行一个作业来遍历所有文件,并为每个文件生成一个哈希。然后,您可以将该值存储在另一个文件或表中,在该表中维护文件列表和历史哈希值。 这不是一个单一步骤的过程,Azure Data Factory或PowerShell Runbook将是编排此过程的最佳方法。