1

Databricks を使用して、Spark 内で Sparkling Water クラウドを起動しようとしています。H2O ライブラリ (3.16.0.2)、PySparkling (pysparkling 0.4.6)、Sparkling Water jar (sparkling-water-assembly_2.11-2.1.10-all.jar) を実行中のクラスターにアタッチしました(Spark 2.1、自動更新 Scala 1.1.1)。

以下の必要なライブラリを正常にインポートします。

from pysparkling import *
import h2o

それでも、次のコマンドを使用して Sparkling Water クラウドを初期化しようとすると:

hc = H2OContext.getOrCreate(spark)

また

H2OContext.getOrCreate(sc)

同じエラーが表示されます:

NameError: name 'H2OContext' is not defined

NameError                                 Traceback (most recent call last)
<command-4043510449425708> in <module>()
----> 1 H2OContext.getOrCreate(sc)

NameError: name 'H2OContext' is not defined

価値があるのは、このScala ドキュメントを使用して Sparkling Water クラウドを初期化できることです。

%scala
import org.apache.spark.h2o._
val h2oConf = new H2OConf(sc).set("spark.ui.enabled", "false")
val h2oContext = H2OContext.getOrCreate(sc, h2oConf)

import org.apache.spark.h2o._
h2oConf: org.apache.spark.h2o.H2OConf =
Sparkling Water configuration:
  backend cluster mode : internal
  workers              : None
  cloudName            : sparkling-water-root_app-20171222131625-0000
  flatfile             : true
  clientBasePort       : 54321
  nodeBasePort         : 54321
  cloudTimeout         : 60000
  h2oNodeLog           : INFO
  h2oClientLog         : WARN
  nthreads             : -1
  drddMulFactor        : 10
h2oContext: org.apache.spark.h2o.H2OContext =

Sparkling Water Context:
 * H2O name: sparkling-water-root_app-20171222131625-0000
 * cluster size: 1
 * list of used nodes:
  (executorId, host, port)
  ------------------------
  (x,xx.xxx.xxx.x,54321)
  ------------------------

  Open H2O Flow in browser: http://xx.xxx.xxx.xxx:54321 (CMD + click in Mac OSX)

ただし、このパイプラインは常に Databricks を使用するとは限らないため、すべて PySpark である必要があり、Databricks には対応する PySpark の例がありません。

前もって感謝します。

4

1 に答える 1

2

pysparkling の場合h2o_pysparkling_2.1、Spark 2.1 クラスターを使用しているため、最初に PyPi ライブラリを作成する必要があります。あなたが添付したライブラリpysparklingは、何か違うものです。h2o_pysparkling_2.1また、パッケージは他の必要なライブラリを既にインポートしているため、他のすべてのライブラリをアタッチする必要はありません。

これを実行したら、次を実行できます。

from pysparkling import *

h2oConf = H2OConf(spark)
h2oConf.set("spark.ui.enabled", False)

h2oContext = H2OContext.getOrCreate(spark, h2oConf)
于 2017-12-22T14:43:52.020 に答える