memsql-火花コネクタを使用したとき、私はmemsql-spark-connectorをテストしようとしていると、このために私はAWS(https://docs.memsql.com/docs/quick-start-with-amazon-webservices)上の単一ノード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サーバーに接続することはできますが、memsql-spark-connector
はリーフノードに直接アクセスしようとします(つまり、3306の代わりにポート3307に接続します)。そして、これは私が次のエラーを取得する起こる:
java.sql.SQLException: Access denied for user 'root'@'108.208.196.149' (using password: YES)
しかしroot
ユーザーが実際にすべての権限を持っている:
memsql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]% |
+--------------------------------------------------------------------------------------------------------------------------------+
| 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でこれを行うことができません(これは、BTW?)。
UPDATE:ちょうどサーバー上でローカルに接続しようとしましたが、まだ動作しません:私は提供しています
[email protected]:~$ memsql -P 3307 -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
パスワードは、インスタンスIDですAWS上で、正しいですので、非常に間違いをするのは難しい。
これは、私がリーフノードと同じインスタンス上でexecutorをスパークしていた場合でも、動作しないことを意味します。何かのような気分は私のセットアップに間違っていますが、実際には設定を変更していない、すべてデフォルトです。
は、マスターノードとリーフノードは、同じ資格情報を使用することになっていますか?別に葉のためにそれらを設定する方法はありますか?
これは一致します。ローカルで 'memsql -P 3307 -u root -p'と接続することもできません。私はどこでも使用しているのと同じパスワードを提供しています(AWSではインスタンスIDなので、間違いを作るのは大変です)。マスターノードとリーフノードは同じ資格情報を使用することになっていますか? –
これは、使用しようとしているユーザー/パスワードがそのノードで間違っていることを意味します。各ノードにはそれぞれ独立した資格がありますので、マスターノードとリーフノードには明らかに異なるパスワードが設定されています。 –
OK、私はそれを理解しました。リーフノードのパスワードは空です。 AWS Marketplaceからインストールすると、デフォルトのルートパスワードはマスターノードでは変更されますが、リーフノードでは変更されません。不思議ですが、それはそれです。手伝ってくれてありがとう! –