使用Python Notebook在Databricks中创建Sparkling Water Cloud

时间:2017-12-22 13:38:50

标签: pyspark h2o databricks sparkling-water

我正在尝试使用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 documentation初始化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示例。

提前致谢。

1 个答案:

答案 0 :(得分:2)

对于pysparkling,您需要首先为h2o_pysparkling_2.1创建一个PyPi库,因为您使用的是Spark 2.1群集。您附加的图书馆pysparkling是不同的。此外,您不需要附加所有其他库,因为h2o_pysparkling_2.1包已经导入了其他必需的库。

一旦你这样做,你就可以运行:

from pysparkling import *

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

h2oContext = H2OContext.getOrCreate(spark, h2oConf)