无法使用 spark-shell 命令连接到 snappydata 存储
Unable to connect to snappydata store with spark-shell command
SnappyData v0.5
我的目标是从我的 SnappyData 安装的 /bin 目录启动 "spark-shell" 并针对我的 SnappyData 存储中的现有表发出 Scala 命令。
我和我的 SnappyData 存储、定位器和潜在客户在同一台主机上(是的,它们都是 运行)。
为此,我 运行 根据此处的文档执行此命令:
Connecting to a Cluster with spark-shell
~/snappydata/bin$ spark-shell --master local[*] --conf snappydata.store.locators=10.0.18.66:1527 --conf spark.ui.port=4041
我在尝试为我的商店创建 spark-shell 时遇到此错误:
[TRACE 2016/08/12 15:21:55.183 UTC GFXD:error:FabricServiceAPI
tid=0x1] XJ040 error occurred while starting server :
java.sql.SQLException(XJ040): Failed to start datab
ase 'snappydata', see the cause for details.
java.sql.SQLException(XJ040): Failed to start database 'snappydata',
see the cause for details.
at com.pivotal.gemfirexd.internal.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:124)
at com.pivotal.gemfirexd.internal.impl.jdbc.Util.newEmbedSQLException(Util.java:110)
at com.pivotal.gemfirexd.internal.impl.jdbc.Util.newEmbedSQLException(Util.java:136)
at com.pivotal.gemfirexd.internal.impl.jdbc.Util.generateCsSQLException(Util.java:245)
at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:3380)
at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection.(EmbedConnection.java:450)
at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection30.(EmbedConnection30.java:94)
at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection40.(EmbedConnection40.java:75)
at com.pivotal.gemfirexd.internal.jdbc.Driver40.getNewEmbedConnection(Driver40.java:95)
at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:351)
at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:219)
at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:195)
at com.pivotal.gemfirexd.internal.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:141)
at com.pivotal.gemfirexd.internal.engine.fabricservice.FabricServiceImpl.startImpl(FabricServiceImpl.java:290)
at com.pivotal.gemfirexd.internal.engine.fabricservice.FabricServerImpl.start(FabricServerImpl.java:60)
at io.snappydata.impl.ServerImpl.start(ServerImpl.scala:32)
Caused by: com.gemstone.gemfire.GemFireConfigException: Unable to
contact a Locator service (timeout=5000ms). Operation either timed out
or Locator does not exist. Configured list of
locators is "[dev-snappydata-1(null):1527]".
at com.gemstone.gemfire.distributed.internal.membership.jgroup.GFJGBasicAdapter.getGemFireConfigException(GFJGBasicAdapter.java:533)
at com.gemstone.org.jgroups.protocols.TCPGOSSIP.sendGetMembersRequest(TCPGOSSIP.java:212)
at com.gemstone.org.jgroups.protocols.PingSender.run(PingSender.java:82)
at java.lang.Thread.run(Thread.java:745)
嗯!我假设您正在从桌面尝试 Spark-shell 并连接到 AWS 中的集群?
不确定这是否会起作用,因为由 spark-shell 启动的本地 JVM 将尝试连接到不太可能起作用的 Snappydata 中的 p2p 集群。
另一方面,Snappy-shell 仅使用 JDBC 客户端进行连接(因此会起作用)。
而且,无论如何,您不能使用定位器客户端端口 (1527)。参见 here
您可以尝试使用 snappydata.store.locators=10.0.18.66:10334
而不是 1527 作为端口吗?这不太可能奏效,但值得一试。
也许有一种方法可以打开所有端口并访问AWS上的这些节点。不过不推荐用于生产。
我很好奇 engg 团队的其他回复。
在此之前,您可能必须从网络(AWS 节点)内启动 spark-shell。
SnappyData v0.5
我的目标是从我的 SnappyData 安装的 /bin 目录启动 "spark-shell" 并针对我的 SnappyData 存储中的现有表发出 Scala 命令。
我和我的 SnappyData 存储、定位器和潜在客户在同一台主机上(是的,它们都是 运行)。
为此,我 运行 根据此处的文档执行此命令:
Connecting to a Cluster with spark-shell
~/snappydata/bin$ spark-shell --master local[*] --conf snappydata.store.locators=10.0.18.66:1527 --conf spark.ui.port=4041
我在尝试为我的商店创建 spark-shell 时遇到此错误:
[TRACE 2016/08/12 15:21:55.183 UTC GFXD:error:FabricServiceAPI tid=0x1] XJ040 error occurred while starting server : java.sql.SQLException(XJ040): Failed to start datab
ase 'snappydata', see the cause for details. java.sql.SQLException(XJ040): Failed to start database 'snappydata', see the cause for details. at com.pivotal.gemfirexd.internal.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:124) at com.pivotal.gemfirexd.internal.impl.jdbc.Util.newEmbedSQLException(Util.java:110) at com.pivotal.gemfirexd.internal.impl.jdbc.Util.newEmbedSQLException(Util.java:136) at com.pivotal.gemfirexd.internal.impl.jdbc.Util.generateCsSQLException(Util.java:245) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:3380) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection.(EmbedConnection.java:450) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection30.(EmbedConnection30.java:94) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection40.(EmbedConnection40.java:75) at com.pivotal.gemfirexd.internal.jdbc.Driver40.getNewEmbedConnection(Driver40.java:95) at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:351) at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:219) at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:195) at com.pivotal.gemfirexd.internal.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:141) at com.pivotal.gemfirexd.internal.engine.fabricservice.FabricServiceImpl.startImpl(FabricServiceImpl.java:290) at com.pivotal.gemfirexd.internal.engine.fabricservice.FabricServerImpl.start(FabricServerImpl.java:60) at io.snappydata.impl.ServerImpl.start(ServerImpl.scala:32)Caused by: com.gemstone.gemfire.GemFireConfigException: Unable to contact a Locator service (timeout=5000ms). Operation either timed out or Locator does not exist. Configured list of locators is "[dev-snappydata-1(null):1527]". at com.gemstone.gemfire.distributed.internal.membership.jgroup.GFJGBasicAdapter.getGemFireConfigException(GFJGBasicAdapter.java:533) at com.gemstone.org.jgroups.protocols.TCPGOSSIP.sendGetMembersRequest(TCPGOSSIP.java:212) at com.gemstone.org.jgroups.protocols.PingSender.run(PingSender.java:82) at java.lang.Thread.run(Thread.java:745)
嗯!我假设您正在从桌面尝试 Spark-shell 并连接到 AWS 中的集群? 不确定这是否会起作用,因为由 spark-shell 启动的本地 JVM 将尝试连接到不太可能起作用的 Snappydata 中的 p2p 集群。
另一方面,Snappy-shell 仅使用 JDBC 客户端进行连接(因此会起作用)。
而且,无论如何,您不能使用定位器客户端端口 (1527)。参见 here
您可以尝试使用 snappydata.store.locators=10.0.18.66:10334
而不是 1527 作为端口吗?这不太可能奏效,但值得一试。
也许有一种方法可以打开所有端口并访问AWS上的这些节点。不过不推荐用于生产。
我很好奇 engg 团队的其他回复。 在此之前,您可能必须从网络(AWS 节点)内启动 spark-shell。