(原文)
以前のエピソードでは、HBaseでPigとHiveを使用する方法を見てきました。今回は、Hue Search appがインデキシングによりYelpデータを検索できるようにするためにはどうするのか、カスタマイズ可能なユーザーインタフェースを構築するにはどうすれば良いのかについて見ていきます。
Solrにインデキシングデータを入れる
このチュートリアルはSolrCloudに基づいています。これはSolrCloudのインストールと、必要となるパッケージリストについてのステップバイステップガイドです:
- solr-server
- solr–mapreduce
- 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に気軽にコメントして下さい!
トラブルシューティング
- このエラーをご覧になった場合:
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番目のエラーから来ているのかもしれません。設定を再アップロードし、コレクションを再作成する必要があるかもしれません。