Hadoopチュートリアル シーズンII:7. SolrでYelpデータをインデックス、検索する方法

Published on 04 November 2013 in Full tutorial / Search / Tutorial / Video - 3 minutes read

原文

以前のエピソードでは、HBaseでPigとHive使用する方法を見てきました。今回は、Hue Search appがインデキシングによりYelpデータを検索できるようにするためにはどうするのか、カスタマイズ可能なユーザーインタフェースを構築するにはどうすれば良いのかについて見ていきます。

 

 

Solrにインデキシングデータを入れる

 

このチュートリアルはSolrCloudに基づいています。これはSolrCloudのインストールと、必要となるパッケージリストについてのステップバイステップガイドです:

  • solr-server
  • solrmapreduce
  • search

 

次の手順はSolr Cloudのデプロイと設定についてです。ドキュメントに従いっていきます。

 

このあと、新しいコレクションと「reviews」という名前のインデックスを作成します。Hadoop tutorial githubからコピーしておく必要がある、事前に定義されたスキーマを使用します。.

 

cp solr_local/conf/schema.xml solr_configs/conf/schema.xml

solrctl instancedir --create reviews solr_local

solrctl collection --create reviews -s 1

Yelpデータに対応するようにマッピングして、スキーマにあるフィールドの定義を置き換えます。スキーマは、検索インデックスで利用可能なそれぞれのデータフィールドを表しています。schema.xmlについての詳細はSolr wikiを読んで下さい。

<field name="business_id" type="text_en" indexed="true" stored="true" />  
  <field name="cool" type="tint" indexed="true" stored="true" />
  <field name="date" type="text_en" indexed="true" stored="true" />
  <field name="funny" type="tint" indexed="true" stored="true" />
  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />  
  <field name="stars" type="tint" indexed="true" stored="true" />
  <field name="text" type="text_en" indexed="true" stored="true" />
  <field name="type" type="text_en" indexed="true" stored="true" />         
  <field name="useful" type="tint" indexed="true" stored="true" />
  <field name="user_id" type="text_en" indexed="true" stored="true" />
  <field name="name" type="text_en" indexed="true" stored="true" />
  <field name="full_address" type="text_en" indexed="true" stored="true" />
  <field name="latitude" type="tfloat" indexed="true" stored="true" />
  <field name="longitude" type="tfloat" indexed="true" stored="true" />
  <field name="neighborhoods" type="text_en" indexed="true" stored="true" />
  <field name="open" type="text_en" indexed="true" stored="true" />
  <field name="review_count" type="tint" indexed="true" stored="true" />
  <field name="state" type="text_en" indexed="true" stored="true" />

続いてHiveのクエリでYelpデータのサブセットを取り出してきれいにし、CSVとしてダウンロードして、インデクサツールとこのコマンドでよりインデックスします::

hadoop jar /usr/lib/solr/contrib/mr/search-mr-*-job.jar org.apache.solr.hadoop.MapReduceIndexerTool -D 'mapred.child.java.opts=-Xmx500m' --log4j /usr/share/doc/search*/examples/solr-nrt/log4j.properties --morphline-file solr_local/reviews.conf --output-dir hdfs://localhost:8020/tmp/load --verbose --go-live --zk-host localhost:2181/solr --collection reviews hdfs://localhost:8020/tmp/query_result.csv

コマンドは、Yelpデータをインデックスのschema.xmlに定義されたフィールドにマップするために、morphlineファイルを使用します。

morphlineをデバッグするには –dry-runオプションがいつの日か役立つでしょう。

 

検索結果をカスタマイズする

管理パネルでは、検索ページの見た目と機能の調整ができます。これはビデオの2番目のパートで説明されています。

 

まとめ

Cloudera Searchはあなたのユーザー基盤をHadoopに解放し、素早くデータの検索を行うために素晴らしいものです。その他のいくつかの記事では、メール顧客データの検索のような、いくつかの良いユーザー事例が述べられています。

Cloudera Morphline も、データのインデキシングを簡単にするための興味深いツールです。Morphlineについての詳細は、プロジェクトのウェブサイトで学ぶことができます。

いつものように、何かあればhue-userメーリングリスト(英語)や、@gethueに気軽にコメントして下さい!

 

トラブルシューティング

  1. このエラーをご覧になった場合:
org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException:Error CREATEing SolrCore ‘reviews_shard1_replica1’: Unable to create core: reviews_shard1_replica1 Caused by: Could not find configName for collection reviews found:null

コレクションを作るのを忘れているのかもしれません:

solrctl instancedir --create review solr_configs

2. このエラーをご覧になった場合:

ERROR - 2013-10-10 20:01:21.383; org.apache.solr.servlet.SolrDispatchFilter; Could not start Solr. Check solr/home property and the logs
ERROR - 2013-10-10 20:01:21.409; org.apache.solr.common.SolrException; null:org.apache.solr.common.SolrException: solr.xml not found in ZooKeeper
       at org.apache.solr.core.ConfigSolr.fromSolrHome(ConfigSolr.java:109)
Server is shutting down

Solrに設定の再読み込みを強制する必要があるかもしれません。これはZooKeeperを壊してしまうかもしれず、3番目のエラーを読む必要があるかもしれないことに注意して下さい。

 

3. このエラーをご覧になった場合:

KeeperErrorCode = NoNode for /overseer/collection-queue-work</str>
<str name="trace">
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /overseer/collection-queue-work

 

これは2番目のエラーから来ているのかもしれません。設定を再アップロードし、コレクションを再作成する必要があるかもしれません。


comments powered by Disqus

More recent stories

10 June 2021
Hue4.10(新しいSQLエディタコンポーネント、REST API、小さなファイルのインポート、Slackアプリなど)がリリースされました!
Read More
29 May 2021
Sqlスクラッチパッドコンポーネントとパブリック REST API を使用して、5 分で独自の SQL エディター (BYOE) を構築する
Read More
26 May 2021
改善されたHueのImporter -- ファイルの選択、方言の選択、テーブルの作成
Read More