2016-09-14 44 views
2

我有一個Spark工作(用Scala編寫)從另一臺服務器上的HBase表中檢索數據。爲了做到這一點,我首先創建這樣的HBaseContextval hBaseContext:HBaseContext = new HBaseContext(sparkContext, HBaseConfiguration.create())指定hbase-site.xml來spark-submit

當我運行spark工作時,我使用spark-submit並指定了所需的參數。事情是這樣的:

spark-submit --master=local[*] --executor-memory 4g --executor-cores 2 --num-executors 2 --jars $(for x in `ls -1 ~/spark_libs/*.jar`; do readlink -f $x; done | paste -s | sed -e 's/\t/,/g') --class com.sparksJob.MyMainClass myJarFile.jar "[email protected]" 

的事情是,這個連接到動物園管理員在本地主機上,但是我想它連接到另一臺服務器上的動物園管理員(就是HBase的是)。

硬編碼信息的工作原理:

val configuration: Configuration = new Configuration() 
configuration.set("hbase.zookeeper.quorum", "10.190.144.8") 
configuration.set("hbase.zookeeper.property.clientPort", "2181") 
val hBaseContext:HBaseContext = new HBaseContext(sparkContext, HBaseConfiguration.create(configuration)) 

不過,但我想它配置。

如何指定spark-將路徑提交到要使用的hbase-site.xml文件?

+1

你可以通過scala應用參數傳遞zookeeper仲裁和端口嗎? – maxteneff

+0

從哪個JAR文件中獲得了HBaseContext,除了Ted Malaska git repo ..我找不到這個類..你能分享你的SBT或POM文件嗎?https:// github .com/tmalaska/SparkOnHBase – Manjesh

回答

2

您可以將hbase-site.xml作爲參數傳遞給--files選項。您的示例將變爲:

spark-submit --master yarn-cluster --files /etc/hbase/conf/hbase-site.xml --executor-memory 4g --executor-cores 2 --num-executors 2 --jars $(for x in `ls -1 ~/spark_libs/*.jar`; do readlink -f $x; done | paste -s | sed -e 's/\t/,/g') --class com.sparksJob.MyMainClass myJarFile.jar "[email protected]" 

請注意主設置爲紗線簇。任何其他選項都會使hbase-site.xml被忽略。

+0

我試過上面的選項,但仍然無法連接到HBase,但在本地模式下工作正常... – Shankar

+0

您運行的是哪個Spark版本?你用什麼作爲'--master'的值? – mgaido