当前位置: 首页 > 知识库问答 >
问题:

Databricks读取Azure blob上次修改日期

赵俊晤
2023-03-14

我有一个Azure Blob存储安装到我的Database ricks hdfs。有没有办法在数据库中获取Blob的最后修改日期?

这就是我阅读blob内容的方式:

val df = spark.read
  .option("header", "false")
  .option("inferSchema", "false")
  .option("delimiter", ",")
  .csv("/mnt/test/*")

共有1个答案

亢仰岳
2023-03-14

通常,有两种方法可以读取Azure Blob上次修改的数据,如下所示。

    < li >通过Azure Storage REST API或Azure Storage SDK for Java直接读取。在我研究了Azure Blob存储REST API之后,有两个REST API < code > Get Blob

这是我在Java中获取Blob的Last-Modified属性的示例代码。

import java.util.Date;

import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.StorageException;
import com.microsoft.azure.storage.blob.CloudBlob;
import com.microsoft.azure.storage.blob.CloudBlobClient;
import com.microsoft.azure.storage.blob.CloudBlobContainer;

String StorageConnectionStringTemplate = "DefaultEndpointsProtocol=https;" + 
        "DefaultEndpointsProtocol=https;" +
        "AccountName=%s;" +
        "AccountKey=%s";
String accountName = "<your storage account name for HDInsight>";
String accountKey = "<your storage account key for HDInsight>";
String containerName = "<container name for HDFS>";
String blobName = "<blob name>";
String storageConnectionString = String.format(StorageConnectionStringTemplate, accountName, accountKey);
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient client = storageAccount.createCloudBlobClient();
CloudBlobContainer container = client.getContainerReference(containerName);
CloudBlob blob = container.getBlobReferenceFromServer(blobName);
Date lastModifiedDate = blob.getProperties().getLastModified();

考虑使用 Hadoop,Azure 是基于适用于 Java 的 Azure 存储 SDK 8.0.0,而不是最新版本的 10.0,因此我上面的示例代码与适用于 Java 的 Azure Blob 存储的官方教程不同。

如果要获取容器的上次修改时间属性,可以使用 REST API [获取容器属性][5] 或 Java 代码“上次修改日期日期 = 容器。.get最后更新()

使用Hadoop AzureJavaAPI forwasb://协议。

import java.util.Date;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileStatus;

Configuration conf = new Configuration();
FileSystem hdfs = FileSystem.get(conf);
Path f = new Path("<blob path on HDFS>");
FileStatus fileStatus = hdfs.getFileStatus(f);
long lastModifiedTime = f.getModificationTime();
Date lastModifiedDate = new Date(lastModifiedTime);
 类似资料:
  • 我需要获取Azure Databricks下DBFS装载点(ADLS Gen1)中所有文件夹和文件的最后修改日期。文件夹结构如下: 使用以下Python代码获取最后修改日期: 从上面的代码中,我得到了所有包含文件的文件夹的正确修改日期。 但对于空文件夹,它会给出当前日期。不是上次修改日期。 然而,当我硬编码空文件夹的路径时,它会给出正确的修改日期: 打印(datetime.fromtimestam

  • 问题内容: 想知道目录的上次修改日期何时更改。我修改了特定目录中的文件(通过FTP),但目录的LMD不变。应该如何运作? 问题答案: 当添加,删除或重命名文件或子目录时,目录本身上的mtime(修改时间)会更改。 修改目录中文件的内容不会更改目录本身,也不会更新文件或子目录的修改时间。如果更改目录的权限,则ctime会更改,而mtime不会。

  • 问题内容: 我的一位同事说,SQL Server将最后修改的日期和时间保存在每条记录的“隐藏列”中。我很确定他说错了。你能向我确认一下吗? 问题答案: 正如其他人所暗示的那样,您的同事一定在胡说八道,或者指的是其他东西。为此,记录或页面的磁盘结构不包含对上次更新时间的任何引用。虽然可以在对象级别找到有关上次更新的信息,但在记录/行级别上找不到此类信息。

  • 问题内容: 有什么标准的方法可以告诉您页面的最后修改时间?目前,我正在这样做: 但是,看起来有些站点没有字段。 http://www.cbc.ca具有以下标头字段: 我可以解析页面以尝试获取其日期,但这似乎是一个很大的痛苦。标准是什么? (如果可能的话,我想坚持使用URLConnection,因为那是我用来下载网页的方法) 问题答案: 没有标准。动态生成的网页通常没有“ Last- Modifie

  • 我在databricks中安装了一个s3 bucket,我可以看到文件列表,也可以使用python读取文件 我想找出我正在阅读的文件的上次修改日期,我找不到太多,但java选项数据砖读取Azure blob的上次修改日期为azure blob,数据砖中有一个python本机选项来读取文件元数据。

  • 我需要知道如何才能提到"过滤"的文件,例如每天的文件:2到12。 我已经尝试与此代码,但我得到所有的文件日期没有过滤他们 文件日期的结果