Spark SQLで述語プッシュ・ダウンを使用する
Solr述語プッシュ・ダウンを使用すると、SearchAnalyticsデータ・センターのクエリーでSpark SQLクエリーのSolrインデックス・カラムを使用できます。
Solr述語プッシュ・ダウンを使用すると、SearchAnalyticsデータ・センターのクエリーでSpark SQLクエリーのSolrインデックス・カラムを使用できます。Solr述語プッシュ・ダウンを有効にするには、グローバル、テーブルごと、またはデータセットごとにspark.sql.dse.solr.enable_optimizationプロパティをtrueに設定します。
DSE Searchのパフォーマンスは、クエリーで返されるレコード数に直接関係します。データセットの大部分を必要とする要求では、述語プッシュ・ダウンを使用せずにフル・テーブル・スキャンを実行した方が良い場合もあります。
ScalaデータセットでSolr述語プッシュ・ダウンを有効にするには、以下のように入力します。
val solrEnabledDataSet = spark.read
.format("org.apache.spark.sql.cassandra")
.options(Map(
"keyspace" -> "ks",
"table" -> "tab",
"spark.sql.dse.solr.enable_optimization" -> "true")
.load()
Solr述語プッシュ・ダウンが有効なSpark SQLで一時的なテーブルを作成するには、以下のように入力します。
CREATE TEMPORARY TABLE temp USING org.apache.spark.sql.cassandra OPTIONS (
table "tab",
keyspace "ks",
spark.sql.dse.solr.enable_optimization "true");
サーバー構成ファイルにspark.sql.dse.solr.enable_optimizationプロパティを追加して、このプロパティをグローバルに設定します。
プッシュ・ダウン・レベルでオプティマイザーが動作し、ソースにプッシュされる述語のみが最適化されます。CassandraSourceRelationにプッシュされる述語の内容を正確に確認するには、explainコマンドを使用します。
val query = spark.sql("query")
query.explain
最適化計画をログに記録する
述語プッシュ・ダウンを使用するクエリーの最適化計画をログに記録するには、Sparkロギング構成ファイルでorg.apache.spark.sql.SolrPredicateRulesロガーをDEBUGに設定します。
<logger name="org.apache.spark.sql.SolrPredicateRules" level="DEBUG"/>
