Hail | Databricks on AWS [2022/1/5時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Hailは大規模遺伝子データセットの分析のためにSpark上で利用できるライブラリです。
重要!
- Hail 0.2.65以降を使用する際には、Apache Spark version 3.1(Databricks Runtime 8.x か 9.x)を使用してください。
- Databricks Runtime for Genomics (deprecated)ではなく、DatabricksランタイムにHailをインストールしてください。
- Hailはクレディンシャルパススルーではサポートされません。
- Hailは、HailからGlowにエクスポートする際を除いてGlowではサポートされません。
クラスターの作成
Databricks Container Servicesを用いてDocker経由でHailをインストールします。
Hail環境をセットアップするためのコンテナに関しては、ProjectGlow Dockerhubページを参照ください。projectglow/databricks-hail:<hail_version>
で、タグを利用可能なHailのバージョンで置き換えて使用してください。
-
Hailを使用するジョブクラスターを作成します。
- Databricks CLIをセットアップします。
- タグを希望の
<hail_version>
に設定して、Hail Docker containerを用いてクラスターを作成します。 - 以下にサンプルのジョブ定義を示します。notebook_pathとDatabricksランタイムの
<databricks_runtime_version>
と<hail_version>
を編集してください。
Bashdatabricks jobs create --json-file hail-create-job.json
hail-create-job.json
{
"name": "hail-job",
"notebook_task": {
"notebook_path" : "/Users/<user@organization.com>/hail/docs/hail-tutorial"
},
"new_cluster": {
"spark_version": "<databricks_runtime_version>.x-scala2.12",
"aws_attributes": {
"availability": "SPOT",
"first_on_demand": 1
},
"node_type_id": "r5d.4xlarge",
"num_workers": 32,
"docker_image": {
"url": "projectglow/databricks-hail:<hail_version>"
}
}
}
ノートブックでHailを使う
多くの部分に関しては、Hailドキュメントと同じようにDatabricksのHailは動作します。しかし、Databricks環境ではいくつかの変更が必要となります。
Hailの初期化
Hailを初期化する際、作成済みのSparkContext
を引渡し、idempotent
をTrue
にしてください。この設定によって、複数のDatabricksノートブックがHailと同じコンテキストを使用するようになります。
注意
ローテーションされるドライバーのlog4jのアウトプットにログを保存するには、skip_logging_configuration
を有効化してください。この設定はHail 0.2.39以降でのみサポートされています。
import hail as hl
hl.init(sc, idempotent=True, quiet=True, skip_logging_configuration=True)
Bokehプロットの表示
Hailはプロットの作成にBokehを使用します。Bokehに組み込まれているshow
関数は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を参照ください。