Apache spark 使用memsql spark连接器时远程访问叶节点

Apache spark 使用memsql spark连接器时远程访问叶节点,apache-spark,singlestore,Apache Spark,Singlestore,我正在尝试测试,为此,我在AWS()上创建了一个单节点MemSQL集群 在我的笔记本电脑上,我想在本地模式下运行Spark应用程序。此应用程序只需为表创建Dataframe,并收集所有行。代码如下: val conf = new SparkConf() .setAppName("Test App") .setMaster("local[*]") .set("memsql.host", "x.x.x.x") .set("memsql.port", "3306") .set("m

我正在尝试测试,为此,我在AWS()上创建了一个单节点MemSQL集群

在我的笔记本电脑上,我想在本地模式下运行Spark应用程序。此应用程序只需为表创建
Dataframe
,并收集所有行。代码如下:

val conf = new SparkConf()
  .setAppName("Test App")
  .setMaster("local[*]")
  .set("memsql.host", "x.x.x.x")
  .set("memsql.port", "3306")
  .set("memsql.user", "root")
  .set("memsql.password", "1234")
  .set("memsql.defaultDatabase", "dataframes_test")

val sc = new SparkContext(conf)

val memsql = new MemSQLContext(sc)

val df = memsql.table("person")

df.collect().foreach(println(_))
其中
x.x.x.x
是我的AWS实例的地址

问题是,尽管我可以从笔记本电脑连接到MemSQL server,
MemSQL spark connector
尝试直接访问叶节点(即连接到端口3307而不是3306)。当这种情况发生时,我得到以下错误:

java.sql.SQLException: Access denied for user 'root'@'108.208.196.149' (using password: YES)
但是
root
用户实际上拥有所有权限:

memsql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                              |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*A49656EC00D74D3524072F3452C1FBA7A1F3B561' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
是否可以向叶节点授予权限,以便与
x.x.x.x:3307
的连接也成功

我意识到它可能不是设计用来使用的方式,但我想这样做只是为了测试。当所有东西都在一个JVM中时,调试非常方便,现在我不想为Spark的安装操心。我可以在本地安装MemSQL来解决我的问题,但我不能在Mac上这样做(顺便说一句,这是对的吗?)

感谢您的帮助


更新:刚刚尝试在服务器上进行本地连接,但仍然无法正常工作:

ubuntu@ip-x-x-x-x:~$ memsql -P 3307 -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我提供的密码是正确的,在AWS上它是一个实例ID,所以很难出错

这意味着,即使我将Spark executor与叶节点放在同一个实例上,它也不会工作。感觉我的设置有问题,但实际上我没有更改任何设置,都是默认设置


主节点和叶节点是否应该使用相同的凭据?有没有办法分别为leaf设置它们?

该错误意味着登录被拒绝,即用户名/密码不正确(并非用户没有足够的权限)。确保您在spark connector中使用的密码与所有节点上的密码匹配。

该错误表示登录被拒绝,即用户名/密码不正确(并非用户没有足够的权限)。确保您在spark连接器中使用的密码与所有节点上的密码匹配。

它确实匹配。我甚至无法在本地连接到
memsql-p3307-uroot-P
,在任何地方都使用相同的密码(在AWS上是实例ID,因此很难出错)。主节点和叶节点是否应该使用相同的凭据?是的,这意味着您尝试在该节点上使用的用户/密码是错误的。请注意,每个节点都有自己的独立凭据,因此在本例中,您的主节点和叶节点显然具有不同的密码。叶节点的密码为空。显然,当从AWS Marketplace安装时,主节点的默认根密码会更改,但叶节点的默认根密码不会更改。奇怪,但事实就是这样。谢谢你的帮助!它确实相配。我甚至无法在本地连接到
memsql-p3307-uroot-P
,在任何地方都使用相同的密码(在AWS上是实例ID,因此很难出错)。主节点和叶节点是否应该使用相同的凭据?是的,这意味着您尝试在该节点上使用的用户/密码是错误的。请注意,每个节点都有自己的独立凭据,因此在本例中,您的主节点和叶节点显然具有不同的密码。叶节点的密码为空。显然,当从AWS Marketplace安装时,主节点的默认根密码会更改,但叶节点的默认根密码不会更改。奇怪,但事实就是这样。谢谢你的帮助!