我已经通过启用诊断设置将数据砖日志发送到存储帐户,现在我必须使用azure数据砖读取这些日志以进行高级分析。当我尝试挂载路径时,它可以工作,但显示为无法工作。
step 1-
containerName = "insights-logs-jobs"
storageAccountName = "smk"
config = "fs.azure.sas." + containerName+ "." + storageAccountName + ".blob.core.windows.net"
sas = "sp=r&st=2021-12-07T08:07:08Z&se=2021-12-07T16:07:08Z&spr=https&sv=2020-08-04&sr=b&sig=3skdlskdlkf5tt3FiR%2FLM%3D"
spark.conf.set(config,sas)
step 2
df = spark.read.json("wasbs://insights-logs-jobs.gtoollogging.blob.core.windows.net/resourceId=/SUBSCRIPTIONS/xxxBD-3070-4AFD-A44C-3489956CE077/RESOURCEGROUPS/xxxx-xxx-RG/PROVIDERS/MICROSOFT.DATABRICKS/WORKSPACES/xxx-ADB/y=2021/m=12/d=07/h=00/m=00/*.json")
Getting below error
shaded.databricks.org.apache.hadoop.fs.azure.AzureException: Unable to access container $root in account insights-logs-jobs.gtjjjng.blob.core.windows.net using anonymous credentials, and no credentials found for them in the configuration.
at shaded.databricks.org.apache.hadoop.fs.azure.AzureNativeFileSystemStore.connectUsingAnonymousCredentials(AzureNativeFileSystemStore.java:796)
at shaded.databricks.org.apache.hadoop.fs.azure.AzureNativeFileSystemStore.createAzureStorage.尝试了很多方法,但都出错了。
发布于 2021-11-24 11:42:45
在下面代码的帮助下,我可以使用pyspark从Azure存储帐户读取数据。
df = spark.read.json("wasbs://container_@storage_account.blob.core.windows.net/sub_folder/*.json")
df.show()这为我提供了终端中所有json文件的完整数据。
或者你可以通过下面的方式来尝试一下:
storage_account_name = "ACC_NAME"
storage_account_access_key = "ACC_key"
spark.conf.set(
"fs.azure.account.key."+storage_account_name+".blob.core.windows.net",
storage_account_access_key)
file_type = "json"
file_location = "wasbs://location/path"
df = spark.read.format(file_type).option("inferSchema", "true").load(file_location)发布于 2021-11-24 18:35:04
这就是databricks挂载的方式。
如果您尝试在现有装载点内创建装载点,例如:
将一个存储帐户装载到/mnt/storage1
将第二个存储帐户装载到/mnt/storage1/storage2
原因:这将失败,因为Databricks中不支持嵌套装载。推荐的方法是为每个存储对象创建单独的装载条目。
例如:
将一个存储帐户装载到/mnt/storage1
将第二个存储帐户装载到/mnt/storage2
你可以参考:Link
作为解决方法-您可以从存储帐户本身读取它进行处理,而不是装载。
https://stackoverflow.com/questions/70080402
复制相似问题