我正在尝试编写一个Spark程序,它从HBase读取数据并将其存储在DataFrame中。
我可以使用hbase-site.xml
文件夹中的$SPARK_HOME/conf
完美地运行它,但我在这里遇到的问题很少。
第一个问题是通过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)
模式下运行它时效果很好。
通过Spark会话传递HBase配置详细信息,我无法在cluster
和client
模式下工作。
我试图通过在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()
模式下无效。
任何人都可以帮我解决或解释为什么会发生这种情况吗?
答案 0 :(得分:-1)
尝试使用Apache Phoenix,它提供了将表数据加载为Dataframe
的隐式方法