仅在存在数据块时,我才尝试将blob存储文件捕获到我的python代码上。如何通过pyspark检查它是否存在?
答案 0 :(得分:0)
我不认为有某种方法可以检查blob是否存在,但是从下面的代码中可以读取它,然后再编写它。
在应用程序级别,首先像在Spark应用程序中一样,您需要获取一个Spark会话:
session = SparkSession.builder.getOrCreate()
然后您需要设置一个帐户密钥:
session.conf.set(
"fs.azure.account.key.<storage-account-name>.blob.core.windows.net",
"<your-storage-account-access-key>"
)
容器的SAS令牌:
session.conf.set(
"fs.azure.sas.<container-name>.blob.core.windows.net",
"<sas-token>"
)
一旦设置了帐户访问密钥或SAS,您就可以读/写到Azure blob:
sdf = session.read.parquet(
"wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/<prefix>"
)
尽管使用python,您可以轻松调用get_blob_reference方法来检查blob是否存在。
def blob_exists(self):
container_name = self._create_container()
blob_name = self._get_blob_reference()
# Basic
exists = self.service.exists(container_name, blob_name) # False
self.service.create_blob_from_text(container_name, blob_name, u'hello world')
exists = self.service.exists(container_name, blob_name) # True
self.service.delete_container(container_name)
您可以在此处找到参考:
https://github.com/Azure/azure-storage-python/blob/master/samples/blob/block_blob_usage.py