标签: azure-databricks

Databricks:如何获取当前笔记本的路径?

Databricks 非常智能,但如何识别当前笔记本的路径?网站上的指南没有帮助。

它建议:

%scala
dbutils.notebook.getContext.notebookPath
res1: Option[String] = Some(/Users/user@org.dk/my_test_notebook)
Run Code Online (Sandbox Code Playgroud)

这并没有给我完整的路径,而是给我一些无法从笔记本访问的文件夹结构的路径。我需要路径,以便我可以在与.ipynb文件相同的文件夹中进行系统调用。

有什么建议?

path jupyter-notebook databricks azure-databricks

5
推荐指数
3
解决办法
5919
查看次数

使用 Powershell 脚本生成 Azure Databricks 令牌

我需要使用 Powershell 脚本生成 Azure Databricks 令牌。我已经完成了使用 ARM 模板创建 Azure Databricks 的工作,现在我希望使用 powershell 脚本生成 Databricks 令牌。

请让我知道如何使用 Powershell 脚本创建 Databricks 令牌

powershell azure databricks azure-databricks

5
推荐指数
1
解决办法
1199
查看次数

将第二代数据湖存储与 databricks 连接

我正在尝试将 MS Azure databricks 与数据湖存储 v2 连接,但无法匹配客户端、秘密范围和密钥。

我在 Azure 数据湖 v2 中有数据。我正在尝试遵循以下说明:

https://docs.azuredatabricks.net/spark/latest/data-sources/azure/azure-datalake-gen2.html#requirements-azure-data-lake

我创建了一个“服务原则”,角色为“存储 Blob 数据贡献者”,获得

我已经在 Azure Keyvault 和 Databricks 中使用键和值创建了秘密范围

当我尝试下面的代码时,身份验证无法识别秘密范围和密钥。从文档中我不清楚是否有必要使用 Azure Keyvault 或 Databricks 秘密范围。

val configs = Map(
  "fs.azure.account.auth.type" -> "OAuth",
  "fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
  "fs.azure.account.oauth2.client.id" -> "<CLIENT-ID>",
  "fs.azure.account.oauth2.client.secret" -> dbutils.secrets.get(scope = "<SCOPE-NAME>", key = "<KEY-VALUE>"),
  "fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com/XXXXXXXXXX/oauth2/token")
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供帮助,请告知/确认:

CLIENT-ID 应该是什么:我知道这是来自存储帐户;

应在 Azure Keyvault 或 Databricks 中的何处创建 SCOPE-NAME 和 KEY-VALUE?

azure oauth-2.0 azure-databricks

5
推荐指数
1
解决办法
1万
查看次数

减少由于 azure databricks 中 GC 分配失败而导致的时间延迟的步骤

我正在 Spark 集群上的 azure databricks python 笔记本中执行打印“Hello World”作业。每次运行作业时,执行时间都会超过 12 秒,预计执行时间不会超过 12 秒,因为这是任何人都能想到的最简单的 Python 代码。当我验证日志时,它显示 GC 分配失败,如下所示:

2019-02-15T15:47:27.551+0000: [GC (Allocation Failure) [PSYoungGen: 312512K->57563K(390144K)] 498744K->243803K(1409024K), 0.0153696 secs] [Times: user=0.05 sys=0.00, real=0.02 secs] 
2019-02-15T15:47:28.703+0000: [GC (Metadata GC Threshold) [PSYoungGen: 206668K->65267K(385024K)] 392909K->251515K(1403904K), 0.0187692 secs] [Times: user=0.06 sys=0.00, real=0.02 secs] 
2019-02-15T15:47:28.722+0000: [Full GC (Metadata GC Threshold) [PSYoungGen: 65267K->0K(385024K)] [ParOldGen: 186248K->244119K(1018880K)] 251515K->244119K(1403904K), [Metaspace: 110436K->110307K(1144832K)], 0.3198827 secs] [Times: user=0.64 sys=0.04, real=0.32 secs] 
Run Code Online (Sandbox Code Playgroud)

想知道由于 GC 分配失败导致作业延迟 > 12 秒吗?如果是,我怎样才能减少它?如果不是,延迟的其他原因是什么以及如何纠正?

python garbage-collection jvm apache-spark azure-databricks

5
推荐指数
1
解决办法
4982
查看次数

通过 requirements.txt 在 Azure Databricks 上维护库/包

有很好的文档可以在 azure databricks 上 1-by-1 安装软件包,但没有一种方法可以执行以下操作:

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

或者完全使用需求文件。我正在管理一个相当大的库,并且想要一个简单的过程,如果可能的话,允许一次安装所有包/库!

python databricks azure-databricks

5
推荐指数
1
解决办法
1419
查看次数

托管资源组是创建 Azure Databricks 所必需的

在创建 Azure Databricks 时,会使用资源(vnet、nsg 和存储帐户)自动创建托管资源组。我的问题是,是否可以在没有托管资源组的情况下创建 Azure Databricks。如果不能,我们是否可以使用我们现有的资源(如 vnet、nsg 和存储帐户)

我曾尝试使用带有空托管资源组的 rest APi 创建 Azure Databricks。但是我在启动工作区时无法登录。

azure azure-databricks

5
推荐指数
1
解决办法
2735
查看次数

Databricks:装载和直接访问 Data Lake Storage Gen 2 之间的区别

使用服务主体和使用 SAS 密钥直接访问在 Databricks 上安装 Azure Data Lake Store Gen2 有什么区别?

我想知道数据传输、访问安全方面的区别

谢谢

azure apache-spark databricks azure-databricks

5
推荐指数
1
解决办法
623
查看次数

为什么在使用范围连接提示时会出现异常?

我正在尝试使用DataFrame.hint()方法向我的联接添加范围联接提示

我有两个表:minutesevents

分钟表的minute_startminute_end列是自固定时间以来以秒为单位的时间。当然,它们的值是 60 的倍数。

事件表有相似的event_startevent_end列,仅用于事件。事件可以在任何一秒开始和结束。

对于每个事件,我需要找到它重叠的所有分钟。

我正在 Databricks(运行时 5.1,Python 3.5)上尝试这个:

# from pyspark.sql.types import StructType, StructField, IntegerType

# minutes = spark.sparkContext\
#                .parallelize(((0,  60),
#                              (60, 120)))\
#                .toDF(StructType([
#                          StructField('minute_start', IntegerType()),
#                          StructField('minute_end', IntegerType())
#                        ]))

# events = spark.sparkContext\
#               .parallelize(((12, 33),
#                             (0,  120),
#                             (33, 72),
#                             (65, 178)))\
#               .toDF(StructType([
#                         StructField('event_start', IntegerType()),
#                         StructField('event_end', IntegerType()) …
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark-sql databricks azure-databricks

5
推荐指数
1
解决办法
1490
查看次数

在 Azure Key Vault 支持的 Databricks 中创建 Secret Scope 失败

可以在 Azure Keyvault 支持的 Databricks 中创建范围,而不是使用 Databricks CLI。但是,当您尝试创建 Scope 时,会显示一条模糊的错误消息(拼写错误!)。似乎没有多少人遇到此错误:

“向 KeyVault: XYZ 授予 Databricks 服务主体的读取/列表权限时发生内部错误”

在这种情况下,将管理主体设置为所有用户无济于事。

在此处输入图片说明

azure azure-keyvault azure-databricks

5
推荐指数
1
解决办法
7600
查看次数

如何处理来自 blob 存储且数据块中路径较长的多个文件?

我已启用 API 管理服务的日志记录,并且日志存储在存储帐户中。现在,我尝试在 Azure Databricks 工作区中处理它们,但在访问这些文件时遇到困难。

问题似乎是自动生成的虚拟文件夹结构如下所示:

/insights-logs-gatewaylogs/resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>/y=*/m=*/d=*/h=*/m=00/PT1H.json
Run Code Online (Sandbox Code Playgroud)

我已将insights-logs-gatewaylogs容器安装在下面/mnt/diags,并dbutils.fs.ls('/mnt/diags')正确列出了该resourceId=文件夹,但未dbutils.fs.ls('/mnt/diags/resourceId=')找到声明文件

如果我沿着虚拟文件夹结构创建空标记 blob,我可以列出每个后续级别,但该策略显然会失败,因为路径的最后部分是按年/月/日/小时动态组织的。

例如一个

spark.read.format('json').load("dbfs:/mnt/diags/logs/resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>/y=*/m=*/d=*/h=*/m=00/PT1H.json")
Run Code Online (Sandbox Code Playgroud)

此错误的产量:

java.io.FileNotFoundException: File/resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>/y=2019 does not exist.
Run Code Online (Sandbox Code Playgroud)

很明显,通配符已经找到了第一年文件夹,但拒绝进一步向下。

我在 Azure 数据工厂中设置了一个复制作业,该作业成功复制同一 Blob 存储帐户中的所有 json Blob 并删除前缀resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>(因此根文件夹以年份组件开头),并且可以一路成功访问,而无需创建空标记斑点。

因此,问题似乎与长虚拟文件夹结构有关,该结构大部分为空。

是否有另一种方法可以在 databricks 中处理此类文件夹结构?

更新:我也尝试在安装时提供路径作为安装的一部分source,但这也没有帮助

azure azure-blob-storage azure-databricks

5
推荐指数
1
解决办法
2763
查看次数