我是Databricks的新手。我编写示例代码来读取Azure Databricks中的Storage Blob。
Opening socket
Listening on port 5000
Starting serv
iserv: MallocStrings []
iserv: return: []
iserv: InitLinker
GHCSlave: mmap 131072 bytes at 0x0: Operation not permitted
GHCSlave: Try specifying an address with +RTS -xm<addr> -RTS
GHCSlave: internal error: m32_allocator_init: Failed to map
(GHC version 8.8.3 for x86_64_apple_ios)
Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug
它抛出错误:
blob_account_name = "sars"
blob_container_name = "mpi"
blob_sas_token =r"**"
ini_path = "58154388-b043-4080-a0ef-aa5fdefe22c8"
inputini = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, ini_path)
spark.conf.set("fs.azure.sas.%s.%s.blob.core.windows.net"% (blob_container_name, blob_account_name), blob_sas_token)
print(inputini)
ini=sc.textFile(inputini).collect()
我想它没有在WASBS链接中附加SAS令牌,因此它不允许读取数据。
如何在wasbs链接中附加SAS。
答案 0 :(得分:0)
这是例外行为,您无法从Databricks访问读取的私有存储。为了从启用防火墙或在vnet中创建防火墙的存储访问私有数据,您将必须在Azure虚拟网络中部署Azure Databricks,然后将存储帐户的防火墙中的Vnet地址范围列入白名单。您可以参考配置Azure存储防火墙和虚拟网络。
具有私人访问权限:
为您提供“ 私有(无匿名访问)”的访问级别。
输出:错误消息
shaded.databricks.org.apache.hadoop.fs.azure.AzureException:shaded.databricks.org.apache.hadoop.fs.azure.AzureException:在帐户cheprasas.blob.core.windows.net中找不到容器carona ,我们无法使用匿名凭证创建该凭证,并且在配置中找不到用于它们的凭证。
具有容器访问权限:
为“ 容器(容器和blob的匿名读取访问权限)”提供访问级别后。
输出:您将能够看到输出而没有任何问题。
参考: Quickstart: Run a Spark job on Azure Databricks using the Azure portal。