冰雹

Hail 是基于 Apache Spark 构建的库,用于分析大型基因组学数据集。

重要

  • 使用 Hail 0.2.65 及更高版本时,请使用 Apache Spark 版本 3.1(Databricks Runtime 8.x 或 9.x)
  • 在 Databricks Runtime 上安装 Hail,而不是在 Databricks Runtime for Genomics(已弃用)上安装
  • Hail 不支持凭据传递
  • Hail 不支持 Glow,除非从 Hail 导出到 Glow

创建群集

使用 Databricks 容器服务通过 Docker 安装 Hail。

有关用于设置 Hail 环境的容器,请参阅 ProjectGlow Dockerhub 页面。 使用 projectglow/databricks-hail:<hail_version>,将标记替换为可用的 Hail 版本。

  1. 使用 Hail 创建作业群集

    1. 设置 Databricks CLI
    2. 使用 Hail Docker 容器创建群集,并将标记设置为所需的 <hail_version>
    3. 下面提供了一个示例作业定义,请编辑 notebook_path、Databricks Runtime <databricks_runtime_version><hail_version>
    databricks jobs create --json-file hail-create-job.json
    

    hail-create-job.json:

{
  "name": "hail",
  "notebook_task": {
    "notebook_path" : "/Users/<user@organization.com>/hail/docs/hail-tutorial",
  },
  "new_cluster": {
    "spark_version": "<databricks_runtime_version>.x-scala2.12",
    "azure_attributes": {
      "availability": "SPOT_WITH_FALLBACK_AZURE",
      "spot_bid_max_price": -1
    },
    "node_type_id": "Standard_DS3_v2",
    "num_workers": 32,
    "docker_image": {
      "url": "projectglow/databricks-hail:<hail_version>"
    }
  }
}

在笔记本中使用 Hail

Azure Databricks 中的 Hail 与 Hail 文档的工作原理大致相同。 但 Azure Databricks 环境需要进行一些修改。

初始化 Hail

初始化 Hail 时,传入预先创建的 SparkContext 并将初始化标记为幂等。 此设置使多个 Azure Databricks 笔记本可以使用相同的 Hail 上下文。

注意

启用 skip_logging_configuration,将日志保存到滚动驱动程序 log4j 输出。 此设置仅在 Hail 0.2.39 及更高版本中受支持。

import hail as hl
hl.init(sc, idempotent=True, quiet=True, skip_logging_configuration=True)

显示 Bokeh 图

Hail 使用 Bokeh 库创建绘图。 内置到 Bokeh 中的 show 函数在 Azure Databricks 中不起作用。 若要显示由 Hail 生成的 Bokeh 图,可以运行以下命令:

from bokeh.embed import components, file_html
from bokeh.resources import CDN
plot = hl.plot.histogram(mt.DP, range=(0,30), bins=30, title='DP Histogram', legend='DP')
html = file_html(plot, CDN, "Chart")
displayHTML(html)

有关详细信息,请参阅 Bokeh