HBase连接器不从Spark会话中读取ZK配置

时间:2018-02-22 08:14:25

标签: scala apache-spark hbase

我正在尝试编写一个Spark程序,它从HBase读取数据并将其存储在DataFrame中。

我可以使用hbase-site.xml文件夹中的$SPARK_HOME/conf完美地运行它,但我在这里遇到的问题很少。

第1期

第一个问题是通过hbase-site.xml模式提交--files参数传递client位置(它在cluster模式下工作)。

当我从hbase-site.xml移除$SPARK_HOME/conf并尝试通过在{YARN上传递client参数时以{​​{1}}模式执行它时,我一直得到一个例外(我think表示它没有从--files获取ZooKeeper配置。

hbase-site.xml
spark-submit \
  --master yarn \
  --deploy-mode client \
  --files /home/siddesh/hbase-site.xml \
  --class com.orzota.rs.json.HbaseConnector \
  --packages com.hortonworks:shc:1.0.0-2.0-s_2.11 \
  --repositories http://repo.hortonworks.com/content/groups/public/ \
  target/scala-2.11/test-0.1-SNAPSHOT.jar

但是,当我在 at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1125) 18/02/22 01:43:09 INFO ClientCnxn: Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error) 18/02/22 01:43:09 WARN ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1125) 模式下运行它时效果很好。

第2期

通过Spark会话传递HBase配置详细信息,我无法在clusterclient模式下工作。

我试图通过在cluster中添加配置参数来直接在代码中添加配置,而不是传递整个hbase-site.xml,例如:

SparkSession

这在val spark = SparkSession .builder() .appName(name) .config("hbase.zookeeper.property.clientPort", "2181") .config("hbase.zookeeper.quorum", "ip1,ip2,ip3") .config("spark.hbase.host","zookeeperquorum") .getOrCreate() val json_df = spark.read.option("catalog",catalog_read). format("org.apache.spark.sql.execution.datasources.hbase"). load() 模式下无效。

任何人都可以帮我解决或解释为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:-1)

尝试使用Apache Phoenix,它提供了将表数据加载为Dataframe

的隐式方法