DSE AnalyticsとSearchの統合

DSE SearchAnalyticsクラスターは、DSE AnalyticsジョブでDSE Searchクエリーを使用できます。

統合されたDSE SearchAnalyticsクラスターでは、CQLクエリーを使用して分析ジョブを実行できます。この統合によって、分析ワークロードで使用されるクエリーをより詳細に制御できるようになり、処理するデータの量を減らすことでパフォーマンスが向上します。ただし、DSE SearchAnalyticsクラスターではワークロードの分離が行われず、プロダクション環境におけるプロビジョニングとパフォーマンスに関する詳細なガイドラインも存在しません。

SearchAnalyticsモードで起動されたノードでは、DSE Searchインデックスを使用する分析クエリーを作成できます。このようなクエリーによって、Sparkジョブで使用されるRDDが返され、返されたデータが分析されます。

以下のコードは、DSE SparkコンソールからDSE Searchクエリーを使用する方法を示しています。

val table = sc.cassandraTable("music","solr")
      val result = table.select("id","artist_name")
      .where("solr_query='artist_name:Miles*'")
      .take(10)

RDDの代わりに、Spark Spark Datasets/DataFramesを使用できます。

val table = spark.read.format("org.apache.spark.sql.cassandra")
      .options(Map("keyspace"->"music", "table" -> "solr"))
      .load() 
      val result = table.select("id","artist_name").where("solr_query='artist_name:Miles*'")
      .show(10) 

また、Spark SQLクエリーを使用することもできます。

val result = spark.sql("SELECT id, artist_name FROM music.solr WHERE solr_query = 'artist_name:Miles*' LIMIT 10")

詳細な例については、「SearchAnalyticsによるウィキペディア・デモの実行」を参照してください。

DSE SearchAnalyticsクラスターの構成

  1. ワークロードの種類別に単一データ・センターを初期化する」の説明に従い、混在ワークロード・クラスターでDSE SearchAnalyticsノードを作成します。

    DseSimpleSnitchを使用すると、データ・センターの名前はSearchAnalyticsに設定されます。DseSimpleSnitchを使用する既存のSearchノードまたはAnalyticsノードをSearchAnalyticsノードに変更しないでください。GossipingPropertyFileSnitchなどの別のスニッチを使用する場合は、データ・センター内に混在ワークロードを含めることができます。

  2. 負荷テストを実行して、SparkおよびSolrに必要な追加のリソース・オーバーヘッドに十分なCPUとメモリーをハードウェアが備えていることを確認します。
    注: SearchAnalyticsノードは常にドライバーのページング設定を使用します。「CQL Solrクエリーでのページネーション(カーソル)の使用」を参照してください。

    SearchAnalyticsノードは、SearchノードまたはAnalyticsノードよりもリソースを消費する可能性があります。ノードのリソース要件は、使用するクエリー・パターンの種類によって大きく異なります。

DSE SearchAnalyticsクラスターの考慮事項

DSEノードでSearchおよびAnalyticsを両方とも有効にする場合は、注意が必要です。両方のワークロードが有効になるため、これらの同時ワークロードに適切なリソースがプロビジョニングされることを確認してください。リソースには、このユース・ケースに該当する固有のインデックス作成、クエリー、処理に対応できる十分なメモリーと計算リソースが含まれます。

SearchAnalyticsクラスターは、すべてのDSEクラスターと同様に、特定のワークロードに対応できる十分なリソースが環境に提供されている場合にプロダクション環境に適しています。

DSE SearchAnalyticsクラスターでクエリーされるすべてのフィールドは、検索インデックス・スキーマ定義で定義される必要があります。検索インデックス・スキーマ・カラムで定義されていないフィールドは、Sparkクエリーから返される結果から除外されます。