标签: azure-databricks

使用 Pyspark 从数组中读取 JSON 项?

我在从 databricks 中的 Cosmos DB 读取项目时遇到一些问题,它似乎将 JSON 作为字符串值读取,并且在将数据从其中获取到列时遇到一些问题。

我有一个名为 ProductRanges 的列,其中连续包含以下值:

[   {
        "name": "Red",
        "min": 0,
        "max": 99,
        "value": "Order More"
    },
    {
        "name": "Amber",
        "min": 100,
        "max": 499,
        "value": "Stock OK"
    },
    {
        "name": "Green",
        "min": 500,
        "max": 1000000,
        "value": "Overstocked"
    }
]
Run Code Online (Sandbox Code Playgroud)

在 Cosmos DB 中,JSON 文档是有效的,在导入数据时,数据帧中的数据类型是字符串,而不是我期望的 JSON 对象/结构。

我希望能够计算“名称”出现的次数,并迭代它们以获取最小值、最大值和值项,因为我们可以拥有的范围数可以超过 3。我已经尽管在 stackoverflow 和其他地方发表了一些帖子,但仍停留在格式上。我尝试使用爆炸并读取基于列值的模式,但它确实说“在无效文档中”,认为这可能是由于 Pyspark 在开始和结束时需要 {},但甚至将其连接到来自 cosmos db 的 SQL 查询最终仍然是字符串的数据类型。

任何指示将不胜感激

json pyspark databricks azure-databricks

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

在 Azure 数据块中创建外部表

我是 azure databricks 的新手,并尝试创建一个指向 Azure Data Lake Storage (ADLS) Gen-2 位置的外部表。

从 databricks 笔记本中,我尝试为 ADLS 访问设置 spark 配置。我仍然无法执行创建的 DDL。

注意:对我有用的一种解决方案是将 ADLS 帐户安装到集群,然后使用外部表的 DDL 中的安装位置。但是我需要检查是否可以使用没有安装位置的 ADLS 路径创建外部表 DDL。

# Using Principal credentials
spark.conf.set("dfs.azure.account.auth.type", "OAuth")
spark.conf.set("dfs.azure.account.oauth.provider.type", "ClientCredential")
spark.conf.set("dfs.azure.account.oauth2.client.id", "client_id")
spark.conf.set("dfs.azure.account.oauth2.client.secret", "client_secret")
spark.conf.set("dfs.azure.account.oauth2.client.endpoint", 
"https://login.microsoftonline.com/tenant_id/oauth2/token")
Run Code Online (Sandbox Code Playgroud)

数据线

create external table test(
id string,
name string
)
partitioned by (pt_batch_id bigint, pt_file_id integer)
STORED as parquet
location 'abfss://container@account_name.dfs.core.windows.net/dev/data/employee
Run Code Online (Sandbox Code Playgroud)

收到错误

Error in SQL statement: AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Got exception: shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.contracts.exceptions.ConfigurationPropertyNotFoundException Configuration property account_name.dfs.core.windows.net not found.);
Run Code Online (Sandbox Code Playgroud)

我需要帮助知道这是否可以直接在 DDL …

hive azure external-tables databricks azure-databricks

7
推荐指数
1
解决办法
5148
查看次数

什么是好的 Databricks 工作流程

我使用 Azure Databricks 进行数据处理,包括笔记本和管道。

我对当前的工作流程不满意:

  • 生产中使用的笔记本不能在不破坏生产的情况下进行修改。当我想开发更新时,我复制笔记本,更改源代码直到我满意,然后用我的新笔记本替换生产笔记本。
  • 我的浏览器不是 IDE!我不能轻易转到函数定义。我有很多笔记本,如果我想修改甚至只是看一个函数的文档,我需要切换到定义这个函数的笔记本。
  • 有没有办法进行高效和系统的测试?
  • Git 集成非常简单,但这不是我主要关心的问题。

azure azure-databricks

7
推荐指数
1
解决办法
717
查看次数

Databricks 笔记本因内存作业而崩溃

我正在运行一些操作来在 azure databricks 上聚合大量数据(约 600GB)。我最近注意到笔记本崩溃并且数据块返回以下错误。相同的代码之前适用于较小的 6 节点集群。将其升级到 12 个节点后,我开始遇到此问题,我怀疑这是一个配置问题。

请提供任何帮助,我使用默认的 Spark 配置,分区数 = 200,并且我的节点上有 88 个执行程序。


Thanks
Internal error, sorry. Attach your notebook to a different cluster or restart the current cluster.
java.lang.RuntimeException: abort: DriverClient destroyed
    at com.databricks.backend.daemon.driver.DriverClient.$anonfun$poll$3(DriverClient.scala:381)
    at scala.concurrent.Future.$anonfun$flatMap$1(Future.scala:307)
    at scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:41)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
    at com.databricks.threading.NamedExecutor$$anon$2.$anonfun$run$1(NamedExecutor.scala:335)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
    at com.databricks.logging.UsageLogging.$anonfun$withAttributionContext$1(UsageLogging.scala:238)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
    at com.databricks.logging.UsageLogging.withAttributionContext(UsageLogging.scala:233)
    at com.databricks.logging.UsageLogging.withAttributionContext$(UsageLogging.scala:230)
    at com.databricks.threading.NamedExecutor.withAttributionContext(NamedExecutor.scala:265)
    at com.databricks.threading.NamedExecutor$$anon$2.run(NamedExecutor.scala:335)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)

azure pyspark databricks azure-databricks

7
推荐指数
1
解决办法
9731
查看次数

如何从 Databricks mnt 目录中删除文件夹/文件

我正在运行 Databricks Community Edition,我想从以下 mnt 目录中删除文件

/mnt/driver-daemon/jars

我运行 dbutils 命令:

dbutils.fs.rm('/mnt/driver-daemon/jars/', True)

但是,当我运行命令时,我收到以下消息(这基本上意味着该文件夹尚未被删除)

Out[1]: False

有人可以让我知道我哪里出错了吗?理想情况下,我想删除 jars 文件夹中的所有文件,但是,如果有人可以帮助展示如何删除该文件夹,那就足够了。

databricks azure-databricks

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

“databricks configure --token”挂起等待输入

我在 Azure DevOps 中运行以下任务,它总是挂起等待输入?为什么我的 bash 自动供给不工作?

databricksUrl=https://...
databricksToken=*****

databricks configure --token << EOF
$(databricksUrl)
$(databricksToken)
EOF
Run Code Online (Sandbox Code Playgroud)

azure-devops databricks azure-databricks databricks-cli

7
推荐指数
2
解决办法
7072
查看次数

Databricks 集群终止。原因:云提供商启动失败

我正在将 Azure Databricks 与使用 vnet 注入的自定义配置结合使用,但无法在工作区中启动群集。给出的错误消息没有记录在 Microsoft 或 databricks 文档中的任何位置,这意味着我无法诊断集群未启动的原因。我重现了以下错误消息:

Instance ID: [redacted]

Azure error message: 
Instance bootstrap failed.
Failure message: Cloud Provider Failure. Azure VM Extension stuck on transitioning state. Please try again later.
VM extension code: ProvisioningState/transitioning
instanceId: InstanceId([redacted])
workerEnv: workerenv-6662162805421143
Additional details (may be truncated): Enable in progress
Run Code Online (Sandbox Code Playgroud)

虽然它说“请稍后重试”,但我一整天都在尝试这个并收到相同的消息,这让我认为这个错误消息不是描述性的,而且确实发生了其他事情。

有人对问题可能是什么有想法吗?

azure databricks azure-databricks

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

我正在尝试直接连接到 abfss(无需安装到 DBFS)并尝试使用 databricks 中的 open() 打开 json 文件

我正在尝试直接连接到 abfss(无需安装到 DBFS)并尝试使用 databricks 中的 open() 方法打开 json 文件。

json_file = open("abfss://@.dfs.core.windows.net/test.json') databricks 无法打开 azure blob 容器中存在的文件并出现以下错误:FileNotFoundError: [Errno 2] No such file 或目录:'abfss://@.dfs.core.windows.net/test.json'

我已经使用服务主体完成了所有配置设置。请建议使用 abfss 直接路径打开文件的其他方式。

azure pyspark azure-blob-storage open-json azure-databricks

7
推荐指数
1
解决办法
5791
查看次数

星型模式(数据建模)仍然与使用 Databricks 的 Lake House 模式相关吗?

我对 Lake House 架构模式了解得越多,并关注 Databricks 的演示,我就几乎看不到任何关于传统数据仓库(Kimball 方法)中的维度建模的讨论。我知道计算和存储要便宜得多,但是如果没有数据建模,查询性能是否会有更大的影响?从 Spark 3.0 开始,我看到了所有很酷的功能,例如自适应查询引擎、动态分区修剪等,但是维度建模是否因此而过时了?如果有人使用 Databricks 实现维度建模,请分享您的想法?

bigdata apache-spark databricks azure-databricks databricks-sql

7
推荐指数
1
解决办法
2871
查看次数

Databricks 无法执行合并,因为多个源行匹配并尝试修改 Delta 表中的同一目标行

我正在尝试与 Databricks 进行合并,但收到错误:

UnsupportedOperationException: Cannot perform Merge as multiple source rows matched and attempted to modify the same
target row in the Delta table in possibly conflicting ways.
Run Code Online (Sandbox Code Playgroud)

我在 SO 上多次看到这个问题,并且我知道如果源数据集的多行匹配并且合并尝试更新目标 Delta 表的相同行,则合并操作可能会失败。

简而言之,当源表有多行尝试更新同一目标行时,就会发生这种情况。如果更新表包含具有相同 ID 的记录,则可能会发生这种情况。就我而言,我认为这不适用。

有人可以看一下我的代码,如果他们能发现任何明显的东西,请告诉我

(deltadf.alias("t")
     .merge(
      df.alias("s"),
      "s.primary_key_hash = t.primary_key_hash")
    .whenMatchedUpdateAll("s.change_key_hash <> t.change_key_hash")
    .whenNotMatchedInsertAll()
   .execute()
  )
Run Code Online (Sandbox Code Playgroud)

样本 deltadf

在此输入图像描述

样本 df

在此输入图像描述

请原谅这些图像。我正在努力使用标记语言添加数据

merge apache-spark pyspark azure-databricks

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