我尝试使用AccumuloInputFormat
和newAPIHadoopRDD
从Accumulo 1.6作业(用Java编写)访问Apache Spark。为了做到这一点,我必须通过调用AccumuloInputFormat
方法告诉setZooKeeperInstance
在哪里找到ZooKeeper。此方法采用ClientConfiguration
对象,该对象指定各种相关属性。
我通过调用静态ClientConfiguration
方法创建我的loadDefault
对象。该方法应该在client.conf
文件的各个位置查找以加载其默认值。它应该看的其中一个地方是$ACCUMULO_CONF_DIR/client.conf
。
因此,我试图设置ACCUMULO_CONF_DIR
环境变量,使其在Spark运行作业时可见(作为参考,我试图在{{1}中运行部署模式)。我还没有找到成功的方法。
到目前为止,我已经尝试过了:
yarn-cluster
setExecutorEnv("ACCUMULO_CONF_DIR", "/etc/accumulo/conf")
SparkConf
ACCUMULO_CONF_DIR
spark-env.sh
spark.executorEnv.ACCUMULO_CONF_DIR
他们都没有奏效。当我在致电spark-defaults.conf
之前打印环境时,setZooKeeperInstance
不会出现。
如果相关,我会使用所有内容的CDH5版本。
以下是我尝试做的一个例子(为简洁而省略了导入和异常处理):
ACCUMULO_CONF_DIR
答案 0 :(得分:2)
所以我在写这个问题的时候找到了答案(抱歉,信誉求职者)。问题是CDH5使用Spark 1.0.0,而我正在通过YARN运行该作业。显然,YARN模式不会关注执行程序环境,而是使用环境变量SPARK_YARN_USER_ENV
来控制其环境。因此,确保SPARK_YARN_USER_ENV
包含ACCUMULO_CONF_DIR=/etc/accumulo/conf
有效,并使ACCUMULO_CONF_DIR
在问题源代码示例中指定点的环境中可见。
独立模式和YARN模式工作方式的差异导致SPARK-1680,在Spark 1.1.0中报告已修复。