当前位置: 首页 > 知识库问答 >
问题:

通过MLflow项目中的Spark访问Databricks中的Delta Lake表

惠诚
2023-03-14

我目前正在使用火花从数据库笔记本访问deltalake表。但是现在我需要从MLflow项目访问delta表。MLflow火花api只允许记录和加载SparkML模型。知道如何实现吗?

目前,我正在尝试通过MLflow项目中的此代码访问火花:


spark = pyspark.sql.SparkSession._instantiatedSession
if spark is None:
  # NB: If there is no existing Spark context, create a new local one.
  # NB: We're disabling caching on the new context since we do not need it and we want to
  # avoid overwriting cache of underlying Spark cluster when executed on a Spark Worker
  # (e.g. as part of spark_udf).
  spark = ( pyspark.sql.SparkSession.builder \
   .config("spark.python.worker.reuse", True)
   .config("spark.databricks.io.cache.enabled", False)
   # In Spark 3.1 and above, we need to set this conf explicitly to enable creating
   # a SparkSession on the workers
   .config("spark.executor.allowSparkContext", "true")
   .master("local[*]")
   .appName("MLflow Project")
   .getOrCreate()
  )

但是我得到这个错误:

py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.

共有2个答案

巩光誉
2023-03-14

它应该以与不在笔记本中运行的普通 Spark 项目相同的方式完成:

  • 将依赖项添加spark-submitpyspark,您需要安装 可以从代码本身设置,请参阅下一步):
pyspark --packages io.delta:delta-core_2.12:1.1.0 \
  --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \
  --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"
  • 创建一个Spark会话对象并使用它:
import pyspark
from delta import *

builder = pyspark.sql.SparkSession.builder.appName("MyApp") \
  .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
  .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")

spark = configure_spark_with_delta_pip(builder).getOrCreate()

增量文档中包含的快速入门指南中介绍了这些步骤。

如果数据驻留在Azure data Lake Storage、AWS S3或GCP上,则可能需要添加其他包

益思博
2023-03-14

在Databricks笔记本中运行MLflow项目(例如,针对连接到该集群的笔记本中的现有交互式集群)目前不受支持,原因有几个(例如,缺少对为运行项目而创建的子进程的身份验证传播)。

 类似资料:
  • 问题内容: 可以说我有以下代码: 有没有一种方法可以以编号方式访问项目,例如: 问题答案: 如果是,则可以通过获取(key,value)对的元组的索引来轻松访问元素,如下所示 Python 3.X的注意事项 将返回一个可迭代的dict视图对象而不是一个列表。我们需要将调用包装到一个列表上,以使建立索引成为可能

  • 我正试图从web API项目中使用Microsoft.Identity.web库对Microsoft Graph API SDK进行简单调用。 用户已经登录,正在从SPA调用受保护的控制器,一切都正常工作--但是现在,这些控件应该调用图形API,而我没有启动并运行它... 而且 MicrosoftIdentityWebChallengeUserException:IDW10502:由于对用户的质询

  • 我想通过postman在openshift项目上创建kafka connect连接器。但是当通过邮递员发送Post命令时,出现如下错误。在openshift中将pod公开为服务(通过postman进行交互)时,我们需要运行什么特定的命令?请指教。 您看到此页面的可能原因: 主机不存在。确保正确键入了主机名,并且存在与此主机名匹配的路由。 主机存在,但没有匹配的路径。检查URL路径是否键入正确,以及

  • 问题内容: 我试图在把手模板内的数组中指定项的索引: 使用这个: 如果上述方法不可行,我将如何编写一个可以访问数组中特殊项目的助手? 问题答案: 尝试这个:

  • 问题内容: 我有一个像这样的json块: 我如何获取此令牌包含的所有关键项目。例如,从上面的代码中,我希望具有“ ADRESS_LOCATION”,“ LOCATION”,“ FLOOR_NUMBER”和“ self”。 问题答案: 您可以将转换为,然后使用方法获取对象属性的列表。从那里,您可以轻松获得名称。 像这样: 输出:

  • 概念问题。我的公司正在推动 Azure 数据砖。我正在努力了解这会把我们带到哪里。 我正在将本地完成的一些工作移植到 Azure 数据砖平台。我想使用 Azure 数据砖 MLfLow 对大量超参数组合运行一个试验。我正在使用 PyTorch 来实现我的模型。 我有一个有8个节点的集群。我想以一种令人尴尬的并行方式在所有节点上开始参数搜索(每个节点运行一次,独立运行)。这是不是像创建一个MLflo