私はまだSQLソリューションなしで新しく、数ヶ月前からnosqlを学び始めました。Javaでapache sparkを使用してcassandraをクエリすると処理が遅くなります。
私はプロジェクトがあり、それはスプリングブートフレームワークによって構築され、DAOレイヤーを持っています。私のデータベースはcassandraで、私はdatastax java cassandraドライバを使って通信しています。私はcassandraを見つけました。あるいは、おそらくすべてのnosqlのキー/バリューソリューションは、大文字と小文字を区別し、 "like%like"の使用例をサポートしていません。 stackoverflowやその他のフォーラムを通じていくつかの調査を行った後、apache spark、elastic search、またはapache luceneのようなツールを使用して、cassandraのデータを掘り起こす必要があることを理解してください。だから、私はapache sparkを選んだので、コードをこのように(ベストプラクティスの面で)実行すべきかどうかはわかりません。ここで
は、データを照会するために私のコードです:
@Override
public Login getLoginByEmail(String shopId, String email) throws InterruptedException, ExecutionException {
JavaFutureAction<List<Login>> loginRDDFuture = javaFunctions(getSparkContext())
.cassandraTable("shop_abc", "app_login", loginRowReader)
.filter(new Function<Login, Boolean>() {
private static final long serialVersionUID = 1L;
@Override
public Boolean call(Login login) throws Exception {
return login.getEmail().equalsIgnoreCase(email.trim());
}
}).collectAsync();
List<Login> lgnList = loginRDDFuture.get();
if(lgnList.size() > 0){
return lgnList.get(0);
}
return null;
}
それが唯一のテーブルと3つのレコードを結果とデータベースを取得するために私に9秒かかりました。私は何百万人ものレコードがデータベースならばどうなるのだろうと思います。
私はこれが良い練習であるか、それを行うためのより良い道具かより良い道具を持っているか分かりません。私は誰かが私に指導を与えることを願っています。
ありがとうございます。
ちょっと前にSASIを調べてください。私の問題はこの提案によって解決できるように見えます。私はそれがcassandraの一部であったので、私はこれを実装します、そして、私はそう多くのサードパーティのライブラリを注入する必要はありません。私はGoogleを介して検索し、ほとんどすべてのトップ提案を読んでいるが、そのうちの誰もこれを紹介していない。ありがとう@アンディ・トゥルベール – A1ucard