Hail 0.2

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

重要

  • 从 Hail 0.2.65 开始,使用 Apache Spark 版本 3.1.1 (Databricks Runtime 3.x 或更高版本)
  • 在 Databricks Runtime 上安装 Hail,而不 Databricks Runtime (弃用的) 。

创建 Hail 群集

通过具有 Databricks 容器服务的 Docker 安装 Hail。

可以在 ProjectGlow Dockerhub 页上找到用于设置 Hail 环境的容器。 使用 projectglow/databricks-hail:<hail_version> ,将标记替换为可用的 Hail 版本。

  1. 使用 Hail 创建作业群集

    1. 设置 DATABRICKS CLI
    2. 使用 Hail Docker 容器创建群集,并将标记设置为所需的
    3. 下面提供了一个示例作业定义,请编辑 notebook_path,Databricks Runtime <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",
      "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 0.2 代码与 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