首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用azure databricks读取azure databricks日志json文件

使用azure databricks读取azure databricks日志json文件
EN

Stack Overflow用户
提问于 2021-11-23 11:50:30
回答 2查看 122关注 0票数 1

我已经通过启用诊断设置将数据砖日志发送到存储帐户,现在我必须使用azure数据砖读取这些日志以进行高级分析。当我尝试挂载路径时,它可以工作,但显示为无法工作。

代码语言:javascript
复制
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.

尝试了很多方法,但都出错了。

EN

回答 2

Stack Overflow用户

发布于 2021-11-24 11:42:45

在下面代码的帮助下,我可以使用pyspark从Azure存储帐户读取数据。

代码语言:javascript
复制
df = spark.read.json("wasbs://container_@storage_account.blob.core.windows.net/sub_folder/*.json")
df.show()

这为我提供了终端中所有json文件的完整数据。

或者你可以通过下面的方式来尝试一下:

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2021-11-24 18:35:04

这就是databricks挂载的方式。

如果您尝试在现有装载点内创建装载点,例如:

将一个存储帐户装载到/mnt/storage1

将第二个存储帐户装载到/mnt/storage1/storage2

原因:这将失败,因为Databricks中不支持嵌套装载。推荐的方法是为每个存储对象创建单独的装载条目。

例如:

将一个存储帐户装载到/mnt/storage1

将第二个存储帐户装载到/mnt/storage2

你可以参考:Link

作为解决方法-您可以从存储帐户本身读取它进行处理,而不是装载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70080402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档