SolrとZeppelinを連携させる

はじめに

Apache Zeppelin というウェブベースのノートブックプロダクトがあります。
ノートブックとはブラウザ上で動作する、対話型のプログラム実行環境で、プログラムやその実行結果、説明のテキストなどを同一のページ上で保存・管理するためのものです。試行錯誤の過程をそのまま記録として残すことができるので、データ分析でよく利用されます。
有名なノートブックとして Jupyter Notebook があります。

Zeppelin は Spark や各種 RDBMS など、様々なデータソースやインタープリタと連携させることができます。Solr との連携も可能です。

Zeppelin インストール

https://zeppelin.apache.org/docs/latest/quickstart/install.html
からダウンロードして展開後、以下を実行。

$ ./install-interpreter.sh --name solr --artifact com.lucidworks.zeppelin:zeppelin-solr:0.1.6
Install solr(com.lucidworks.zeppelin:zeppelin-solr:0.1.6) to /home/splout/zeppelin-0.10.1-bin-all/interpreter/solr ...
Interpreter solr installed under /home/splout/zeppelin-0.10.1-bin-all/interpreter/solr.

1. Restart Zeppelin
2. Create interpreter setting in 'Interpreter' menu on Zeppelin GUI
3. Then you can bind the interpreter on your note

Zeppelin 起動

$ ./zeppelin-daemon.sh start

Solr との連携を設定

  1. http://localhost:8080/ にアクセスしてメニュー「Interpreter」を開く。
  2. Solr の Properties を設定する
    • solr.baseUrl, solr.collection, jdbc.url, jdbc.driver
  3. 「Create New Note」で新しいノートブックを開く
    • Default Interpreter を solr にする

実行例

以降の操作対象をコレクション test1 にする

use test1

全件検索

search q=*:*&fl=area,name,address,type,address_p

検索対象のコレクションを実行時に指定することもできる

search(test1,q=area_str:中央区,fl="name_str,area_str,address_str,type_str,address_p",rows=100)

[Solr] Streaming Expressios と Math Expressions 利用例のページが充実している

Solr はそもそもは検索エンジン・検索サーバですが、Streaming Expressios や Math Expressions という機能を組み合わせることで、データサイエンスのツールとしても使えます。

公式サイトResoucesのページの Documentation の項に Visual Guide to Streaming Expressions and Math Expressions というリンクがあり、そこで数多くの利用例を見ることができます。

目次はこんな感じです。

  • Visualizations
  • Getting Started
  • Data Loading
  • Searching, Sampling and Aggregation
  • Transforming Data
  • Scalar Math
  • Vector Math
  • Variables and Vectorization
  • Matrix Math
  • Text Analysis and Term Vectors
  • Probability
  • Statistics
  • Linear Regression
  • Curve Fitting
  • Time Series
  • Interpolation and Numerical Calculus
  • Signal Processing
  • Simulations
  • Machine Learning
  • Computational Geometry

たとえばこんな感じで、データ分析の各手法とその利用例がずらっと並んでいます。 Visual Guide となっているだけあって、データの可視化にも力が入っています。

Stream Expression には前から興味はあったのですが、このページを取っ掛かりにして勉強してみようと思います。

2022年を振り返り2023年の目標を決める

こんにちわ。
リエです。

2023年卯年。こんにちわ。
お正月はいつも通り寝正月でしたが、年末年始はカレンダー通りだったので生活リズムが崩れなかったのはよかったです。無事社会復帰できました。

弊社では毎年メンバー全員で書き初めをするという新年イベントがあるので、その準備として2022年を振り返り2023年の目標を決めたいと思います。

2022年は振り返るとお恥ずかしいことに一つ一つのお仕事を終わらしていくことに必死で流れ作業になっていることが多々ありました。
あれやったっけ?それ私がやりましたっけ?とうろ覚えになっていることもたくさんあり、やばいですよね。

ですが、そんな自分でもなんとかお仕事をできていたのは周りの人たちのサポートがあったからです。
自分の目標や夢を周りの人たちがサポートしたくさん叶えてくれていました。感謝しかありません。

日々感謝の気持ちをもてているかと言われると全然そうではなく、自分に余裕がなかったりイライラしているときはもてていないので2023年は感謝の気持ちを忘れそうになったら一度立ち止まり深呼吸をし感謝の気持ちを思い出したいと思います。

書き初めする内容は決まったぜ✌
字を書かなさすぎて汚いので書き初めまでに習字の練習をします。(悪あがき)

Solr 9 での追加モジュールの指定方法

従来、Solr の追加モジュールの位置づけにあるものは contrib 配下にありました。

$ ls solr-8.11.1/contrib/
analysis-extras    dataimporthandler-extras  gcs-repository             langid  prometheus-exporter  velocity
dataimporthandler  extraction                jaegertracer-configurator  ltr     s3-repository

Solr 9 では modules という名前に変更されました。

$ ls solr-9.0.0/modules/
analysis-extras  clustering  gcs-repository  hdfs                       jwt-auth  ltr            scripting
analytics        extraction  hadoop-auth     jaegertracer-configurator  langid    s3-repository  sql

いくつか新しいモジュールも増えています。

モジュールを追加して起動する方法も新しくなっています。従来は solrconfig.xml に lib ディレクティブで jar ファイルを指定する必要がありましたが、Solr 9 では solr.in.sh 内で環境変数 SOLR_MODULES に必要なモジュール名を書くだけでよくなっています。

SOLR_MODULES=sql

Solr 9 の Admin UI には SQL エディタが追加されていますが、デフォルトの設定では sql モジュールが動いていないようで SQL を使ったクエリを実行すると Error loading class ‘solr.SQLHandler’ となってしまいます。

そこで上記のように環境変数で SOLR_MODULES=sql を指定して solr を起動し直すと問題なく SQL エディタが動作します。

このあたりの設定の簡便化は非常にありがたいものですね。

格安の小型ネットワークカメラが便利だった

一人で家を出てしばらく経ってから「鍵閉めたっけ?」と不安になることがあります。数分程度なら一度戻って確認することもあります。いつも鍵を閉めるときにドアを引っ張って確認するように心がけているし、確認しに戻ってやっぱり忘れてたってことは一度も無いのですが。

最近は鍵を閉めるところをスマホで撮影するようにして、後からの不安を解消できてはいるのですが、もうちょっとスマートになんとかしたいなあと思っていました。一番いいのは所謂スマートロックを取り付けて外出先から確認できるようにすることですが、家族の許可が下りないため、事前の策としてカメラで玄関ドアの鍵の部分を監視できるようにしてみました。

玄関監視用のカメラを設置するにあたっては、我が家特有の事情によりいろいろ制限があります。

  • インターネット経由で外から見られる
  • 玄関付近にコンセントが無いのでできれば電源内蔵
  • 真っ暗でもある程度写せる
  • 小さければ小さいほど良し

これらを満たすちゃんとしたカメラは結構なお値段がするので二の足をふんでいましたが、Amazonで4000円くらいで売っているものを見つけて試しに買ってみました。

製品名は WiFi 型ミニカメラ X6D といいます。
これがなかなかの優れものでした。

手のひらサイズよりさらに小さい
  • めちゃくちゃ小さい
  • 充電池内蔵でワイヤレスで使用できる
  • 無線LAN内蔵
  • SDカードに録画できる
  • 赤外線オンで暗所でも撮影できる
  • 動体検知してアプリに通知

角度調節可能な台座も付いています。マグネットで着脱できるので非常に便利。

台座
カメラをセット

これを玄関に設置してドアを内側から撮影しています。
ずっと稼働させておく必要は無いので、普段は自分のデスク上で充電しておいて外出時に電源を入れて台座にくっつけます。さすがにこのサイズなので電源は長くもちません。だいたい2時間程度でしょうか。我が家の用途では外出数分後に鍵の状態を確認できれば良いだけなので、十分です。大きめのモバイルバッテリーを繋げば1日程度はもつのではないかと思います。

カメラの映像はアプリで見ることができます。
下の画像は、電気を消して外出した後で赤外線オンで静止画を撮影したものです。

人の目だと真っ暗でもこのくらいに撮れる

なにしろ安いし小さいし、使い物になるのかどうか届くまで不安でしたが、思ったよりもしっかりした良い製品でした。無線カメラとして使うには電池が小さいのが難点ですが、小回りの良さを活かして面白い使い方がいろいろできるのではないかと考えています。