SlideShare a Scribd company logo
1
Apache Calcite の
Apache Geode
Adopter を弄った
@quitada
2017/12/26
“Apache Calcite” とは?
 次世代高性能データベース構築のための基盤ソフト
ウェア
– Java で記述されている
– SQL インターフェースを提供
– クエリーオプティマイザーを提供
– データストアそのものは提供しないが、NoSQL データ
ベース等をデータストアとして使用可能とするアダプ
ター実装を提供
2
情報ソース: https://calcite.apache.org/
Apache Calcite を使用しているプロジェクト
3
Apache Calcite はこ
れらのプロジェクト
に、SQL インター
フェースやクエリー
オプティマイザー機
能を提供するため使
用されている。
Apache Calcite はこ
れらのプロジェクト
やサービスに対して、
オフィシャルなアダ
プター実装を提供し
ている。
データストアとの連携方法とクエリー実行
 アダプター実装を用意する
 対象データストアに対する json 形
式のモデルファイルを用意する
– こちらは Cassandra の例
– アダプター実装のファクトリー
クラスを指定する必要がある
 対象データストアに対して、
sqlline コマンドか JDBC ドライバー
で接続して SQL クエリーを実行
4
{
version: '1.0',
defaultSchema: 'twissandra',
schemas: [
{
name: 'twissandra',
type: 'custom',
factory: 'org.apache.calcite.adapter.cassandra.CassandraSchemaFactory',
operand: {
host: 'localhost',
keyspace: 'twissandra'
}
}
]
}
$ ./sqlline
sqlline> !connect jdbc:calcite:model=model.json admin admin
sqlline> SELECT "tweet_id"
FROM "timeline"
WHERE "username" = 'JmuhsAaMdw'
ORDER BY "time" DESC LIMIT 1;
Apache Geode Adapter
 Apache Geode 開発元の Pivotal 社から正式リリースされては
いないが、Christian Tzolov 氏(Pivotal 社所属の Spring エン
ジニア)の個人の GitHub リポジトリにて提供
– https://github.com/tzolov/calcite/tree/geode-1.3/geode
 Apache Calcite と GemFire/Geode インテグレーションについ
て、SpringOne Platform 2017 の以下のセッションにて氏自ら
語っている。
– https://youtu.be/tH2Q3ZujTHY
5
Apache Geode Adapter を弄ってみた(1/6)
 はい、動きました。でも INSERT は実装されてないけど
– そもそも Apache Calcite の JDBC ドライバーでは更新系の操作は非対応のようですが。
 以下の設定で、Apache Geode クラスターを準備
– クラスター構成:Apache Geode 1.3 ベースに、Locator を用意し、Client-Server 構成
とする
– シリアライズ対象のドメインクラスを実装
– 以下の設定で Region を作成
▪ シリアライズ対象のドメインクラスに、PDX ReflectionBasedAutoSerializer を設定し、read-serialized=“true”
とする(つまり、get 操作に対して PDXInstances 型オブジェクトを返す設定)
– gfsh 等の Geode クライアントからいくつかのテストデータエントリーを対象 Region
に put
6
Apache Geode Adapter を弄ってみた(2/6)
 GitHub リポジトリーより、Apache Geode Adapter 実装込み
の Apache Calcite を入手、インストール
– $ cd /path/to/local_git_repo
– $ git clone https://github.com/tzolov/calcite.git
– $ cd /path/to/local_git_repo/calcite
– $ git checkout geode-1.3
– $ mvn install -DskipTests -Dcheckstyle.skip=true
7
Apache Geode Adapter を弄ってみた(3/6)
 sqlline コマンドスクリプトを編集し、コンパイルしたドメインクラスへのパス
を CLASSPATH に追加
– $ cd /path/to/local_git_repo/calcite
– $ vi sqlline
– 注意:“cache.xml” というファイル名のファイルは、/classpath/to/domain_classes 配
下に置かないこと。Apache Geode API はキャッシュ設定のため cache.xml というファ
イルを CLASSPATH から検索し設定し、Apache Geode Adaptor が期待しないキャッ
シュ設定がされてしまう可能性があるため。
8
:
for module in core cassandra druid elasticsearch2 elasticsearch5 file mongodb server spark splunk geode…
CP=${CP}${module}/target/classes:
CP=${CP}${module}/target/test-classes:
done
CP=${CP}/classpath/to/domain_classes:
CP="${CP}$(cat target/fullclasspath.txt)”
:
Apache Geode Adapter を弄ってみた(4/6)
 実際の Region 設定に応じて、model.json ファイルを編集
– $ cd /path/to/local_git_repo/calcite/geode/target/test-classes
– $ vi model.json
9
{
"version": "1.0",
"defaultSchema": "TEST",
"schemas": [
{
"name": "TEST",
"type": "custom",
"factory": "org.apache.calcite.adapter.geode.simple.GeodeSimpleSchemaFactory",
"operand": {
"locatorHost": "172.16.227.2",
"locatorPort": "55221",
"regions": "BookMaster",
"pdxSerializablePackagePath": ”quitada.*"
}
}
]
}
2017 年 12 月現在、
ファクトリークラス
名の設定が間違って
いるようなので、こ
の赤字のように修正
する。
Locator 情報
Region
名
サーバーサイドの cache.xml に記載さ
れているように PDX シリアライズ対
象ドメインクラスのパスを記述
Apache Geode Adapter を弄ってみた(5/6)
 sqlline コマンドを実行
– $ cd /path/to/local_git_repo/calcite
– $ ./sqlline
 ClassNotFoundError 等のエラーや例外が発生した場合は、設
定内容を確認、それでも解消しないようなら、以下のファ
イルを削除して、再度 sqlline コマンドを実行
– /path/to/local_git_repo/calcite/target/fullclasspath.txt
10
Apache Geode Adapter を弄ってみた(6/6)
 sqlline コマンドデモ
– Apache Geode クラスターに接続
▪ !connect jdbc:calcite:model=/path/to/model.json admin admin
– テーブル一覧表示
▪ !tables
– 最もシンプルなクエリーの実行
▪ SELECT * FROM “[Regoin 名]”;
11
なぜか、対象 Region 名をダブル
クォーテーションで囲ってやらないと
うまくクエリーできない(2017 年 12
月現在)…

More Related Content

Similar to Apache Calcite の Apache Geode Adapter を弄った

第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
Ryosuke MATSUMOTO
 
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
Ashitaba YOSHIOKA
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
takezoe
 
Azure DataLake 大全
Azure DataLake 大全Azure DataLake 大全
Azure DataLake 大全
Daiyu Hatakeyama
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行guest5f4320
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
Shinsuke Sugaya
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用についてYuuki Namikawa
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
Daiyu Hatakeyama
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
 
CategoLJについて
CategoLJについてCategoLJについて
CategoLJについてToshiaki Maki
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
ssuser65180a
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
Oda Shinsuke
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonJOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
Naoto Gohko
 
SQL Server エンジニア のための コンテナ入門
SQL Server エンジニア のための コンテナ入門SQL Server エンジニア のための コンテナ入門
SQL Server エンジニア のための コンテナ入門
Tomoyuki Oota
 

Similar to Apache Calcite の Apache Geode Adapter を弄った (20)

第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
 
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Azure DataLake 大全
Azure DataLake 大全Azure DataLake 大全
Azure DataLake 大全
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
CategoLJについて
CategoLJについてCategoLJについて
CategoLJについて
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonJOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
 
SQL Server エンジニア のための コンテナ入門
SQL Server エンジニア のための コンテナ入門SQL Server エンジニア のための コンテナ入門
SQL Server エンジニア のための コンテナ入門
 

More from Akihiro Kitada

How to configure the cluster based on Multi-site (WAN) configuration
How to configure the clusterbased on Multi-site (WAN) configurationHow to configure the clusterbased on Multi-site (WAN) configuration
How to configure the cluster based on Multi-site (WAN) configuration
Akihiro Kitada
 
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたReactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Akihiro Kitada
 
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
Akihiro Kitada
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
Akihiro Kitada
 
Apache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみたApache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみた
Akihiro Kitada
 
Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視
Akihiro Kitada
 
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
Akihiro Kitada
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
Akihiro Kitada
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理
Akihiro Kitada
 
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
Akihiro Kitada
 
Apache Geode で始める Spring Data Gemfire
Apache Geode で始めるSpring Data GemfireApache Geode で始めるSpring Data Gemfire
Apache Geode で始める Spring Data Gemfire
Akihiro Kitada
 
Reactor によるデータインジェスチョン
Reactor によるデータインジェスチョンReactor によるデータインジェスチョン
Reactor によるデータインジェスチョン
Akihiro Kitada
 

More from Akihiro Kitada (12)

How to configure the cluster based on Multi-site (WAN) configuration
How to configure the clusterbased on Multi-site (WAN) configurationHow to configure the clusterbased on Multi-site (WAN) configuration
How to configure the cluster based on Multi-site (WAN) configuration
 
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたReactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
 
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
Apache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみたApache Geode の Apache Lucene Integration を試してみた
Apache Geode の Apache Lucene Integration を試してみた
 
Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視
 
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理
 
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
 
Apache Geode で始める Spring Data Gemfire
Apache Geode で始めるSpring Data GemfireApache Geode で始めるSpring Data Gemfire
Apache Geode で始める Spring Data Gemfire
 
Reactor によるデータインジェスチョン
Reactor によるデータインジェスチョンReactor によるデータインジェスチョン
Reactor によるデータインジェスチョン
 

Apache Calcite の Apache Geode Adapter を弄った

  • 1. 1 Apache Calcite の Apache Geode Adopter を弄った @quitada 2017/12/26
  • 2. “Apache Calcite” とは?  次世代高性能データベース構築のための基盤ソフト ウェア – Java で記述されている – SQL インターフェースを提供 – クエリーオプティマイザーを提供 – データストアそのものは提供しないが、NoSQL データ ベース等をデータストアとして使用可能とするアダプ ター実装を提供 2 情報ソース: https://calcite.apache.org/
  • 3. Apache Calcite を使用しているプロジェクト 3 Apache Calcite はこ れらのプロジェクト に、SQL インター フェースやクエリー オプティマイザー機 能を提供するため使 用されている。 Apache Calcite はこ れらのプロジェクト やサービスに対して、 オフィシャルなアダ プター実装を提供し ている。
  • 4. データストアとの連携方法とクエリー実行  アダプター実装を用意する  対象データストアに対する json 形 式のモデルファイルを用意する – こちらは Cassandra の例 – アダプター実装のファクトリー クラスを指定する必要がある  対象データストアに対して、 sqlline コマンドか JDBC ドライバー で接続して SQL クエリーを実行 4 { version: '1.0', defaultSchema: 'twissandra', schemas: [ { name: 'twissandra', type: 'custom', factory: 'org.apache.calcite.adapter.cassandra.CassandraSchemaFactory', operand: { host: 'localhost', keyspace: 'twissandra' } } ] } $ ./sqlline sqlline> !connect jdbc:calcite:model=model.json admin admin sqlline> SELECT "tweet_id" FROM "timeline" WHERE "username" = 'JmuhsAaMdw' ORDER BY "time" DESC LIMIT 1;
  • 5. Apache Geode Adapter  Apache Geode 開発元の Pivotal 社から正式リリースされては いないが、Christian Tzolov 氏(Pivotal 社所属の Spring エン ジニア)の個人の GitHub リポジトリにて提供 – https://github.com/tzolov/calcite/tree/geode-1.3/geode  Apache Calcite と GemFire/Geode インテグレーションについ て、SpringOne Platform 2017 の以下のセッションにて氏自ら 語っている。 – https://youtu.be/tH2Q3ZujTHY 5
  • 6. Apache Geode Adapter を弄ってみた(1/6)  はい、動きました。でも INSERT は実装されてないけど – そもそも Apache Calcite の JDBC ドライバーでは更新系の操作は非対応のようですが。  以下の設定で、Apache Geode クラスターを準備 – クラスター構成:Apache Geode 1.3 ベースに、Locator を用意し、Client-Server 構成 とする – シリアライズ対象のドメインクラスを実装 – 以下の設定で Region を作成 ▪ シリアライズ対象のドメインクラスに、PDX ReflectionBasedAutoSerializer を設定し、read-serialized=“true” とする(つまり、get 操作に対して PDXInstances 型オブジェクトを返す設定) – gfsh 等の Geode クライアントからいくつかのテストデータエントリーを対象 Region に put 6
  • 7. Apache Geode Adapter を弄ってみた(2/6)  GitHub リポジトリーより、Apache Geode Adapter 実装込み の Apache Calcite を入手、インストール – $ cd /path/to/local_git_repo – $ git clone https://github.com/tzolov/calcite.git – $ cd /path/to/local_git_repo/calcite – $ git checkout geode-1.3 – $ mvn install -DskipTests -Dcheckstyle.skip=true 7
  • 8. Apache Geode Adapter を弄ってみた(3/6)  sqlline コマンドスクリプトを編集し、コンパイルしたドメインクラスへのパス を CLASSPATH に追加 – $ cd /path/to/local_git_repo/calcite – $ vi sqlline – 注意:“cache.xml” というファイル名のファイルは、/classpath/to/domain_classes 配 下に置かないこと。Apache Geode API はキャッシュ設定のため cache.xml というファ イルを CLASSPATH から検索し設定し、Apache Geode Adaptor が期待しないキャッ シュ設定がされてしまう可能性があるため。 8 : for module in core cassandra druid elasticsearch2 elasticsearch5 file mongodb server spark splunk geode… CP=${CP}${module}/target/classes: CP=${CP}${module}/target/test-classes: done CP=${CP}/classpath/to/domain_classes: CP="${CP}$(cat target/fullclasspath.txt)” :
  • 9. Apache Geode Adapter を弄ってみた(4/6)  実際の Region 設定に応じて、model.json ファイルを編集 – $ cd /path/to/local_git_repo/calcite/geode/target/test-classes – $ vi model.json 9 { "version": "1.0", "defaultSchema": "TEST", "schemas": [ { "name": "TEST", "type": "custom", "factory": "org.apache.calcite.adapter.geode.simple.GeodeSimpleSchemaFactory", "operand": { "locatorHost": "172.16.227.2", "locatorPort": "55221", "regions": "BookMaster", "pdxSerializablePackagePath": ”quitada.*" } } ] } 2017 年 12 月現在、 ファクトリークラス 名の設定が間違って いるようなので、こ の赤字のように修正 する。 Locator 情報 Region 名 サーバーサイドの cache.xml に記載さ れているように PDX シリアライズ対 象ドメインクラスのパスを記述
  • 10. Apache Geode Adapter を弄ってみた(5/6)  sqlline コマンドを実行 – $ cd /path/to/local_git_repo/calcite – $ ./sqlline  ClassNotFoundError 等のエラーや例外が発生した場合は、設 定内容を確認、それでも解消しないようなら、以下のファ イルを削除して、再度 sqlline コマンドを実行 – /path/to/local_git_repo/calcite/target/fullclasspath.txt 10
  • 11. Apache Geode Adapter を弄ってみた(6/6)  sqlline コマンドデモ – Apache Geode クラスターに接続 ▪ !connect jdbc:calcite:model=/path/to/model.json admin admin – テーブル一覧表示 ▪ !tables – 最もシンプルなクエリーの実行 ▪ SELECT * FROM “[Regoin 名]”; 11 なぜか、対象 Region 名をダブル クォーテーションで囲ってやらないと うまくクエリーできない(2017 年 12 月現在)…