Oracle® Fusion Middleware Oracle CQLデータ・カートリッジによるアプリケーションの開発 12c リリース(12.2.1.2.0) E82779-01 |
|
前へ |
次へ |
Oracle Stream Analyticsでは、Hadoop、NoSQLDBおよびHBaseカートリッジによりビッグ・データをサポートします。Hadoopカートリッジは、Oracle CQLプロセッサがHadoop分散ファイルシステム(HDFS)の大容量データにアクセスするための拡張です。HDFSは、非リレーショナル・データ・ストアです。NoSQLカートリッジは、Oracle CQLプロセッサがOracle NoSQL Databaseの大容量データにアクセスするための拡張です。Oracle NoSQLデータベースは、データをキーと値のペアで保管します。HBaseカートリッジは、HBaseデータベース内にある大量のデータにアクセスするOracle CQLプロセッサ用の拡張です。HBaseは、Hadoopファイル・システム上に構築される、分散型の列指向のデータベースです。
この章の内容は次のとおりです。
ビッグ・データは、従来のデータ処理アプリケーションでは不十分な場合に使用される巨大で複雑なデータ・セットです。ビッグ・データは、従来のデータと並んで、多くの新しいタイプのデータおよびデータ管理を含み、統合する、全体的な情報管理戦略を表します。
また、ビッグ・データは次のように4つのVによって定義されます。
ボリューム(Volume): データの量です。より多くのデータがあることを意味しますが、独特なのはデータの粒度です。ビッグ・データは大量の低密度の非構造化Hadoopデータ、つまりTwitterデータ・フィード、Webページおよびモバイル・アプリケーションのクリック・ストリーム、ネットワーク・トラフィック、光速でデータを捕捉するセンサーを利用できる装置、その他多くの値が不明なデータを処理する必要があります。このようなHadoopデータを価値ある情報に変換することは、ビッグ・データの役割です。
速度(Velocity): データを受信し、処理する速さです。速度の速いデータは、通常はメモリーに直接ストリームされ、ディスクには書き込まれません。
多様性(Variety): 新しい非構造化データ型のことです。テキスト、オーディオ、ビデオなどの非構造化および半構造化データ型では、意味の解明および補助となるメタデータの両方に対する追加の処理が必要になります。解明されると、非構造化データは、サマリー、系統、監査可能性およびプライバシーなどの構造化データと共通する多くの要件を持つようになります。
値(Value): データには固有の値がありますが、検出する必要があります。データから値を導き出するための、様々な量的および研究的な手法があります。
Hadoopはオープンソース・テクノロジであり、これを使用してクラスタにまたがって分散された膨大なデータ・セットにアクセスできます。Hadoopソフトウェアの特徴の1つに、リレーショナル・データベースに保存されていない膨大な量のデータへのアクセスを可能にするということが挙げられます。Oracle Stream Analyticsのデータ・カートリッジは、Cloudera distribution for Hadoop (CDH)バージョン3u5に基づきます。
このマニュアルの内容は、読者がHadoopシステムにすでに精通していて、運用しているものと想定しています。Hadoopの詳細は、HadoopプロジェクトのWebサイトhttp://hadoop.apache.org/
を参照してください。
注意:
HadoopをLinux環境でのみ実行している場合でも、UNIXおよびWindowsでHadoopデータ・カートリッジを使用できます。
Hadoop分散ファイル・システム上のファイルのデータを処理できるイベント処理ネットワークに既存のHadoopデータ・ソースを統合するには、Hadoopデータ・カートリッジを使用できます。データ・ソースを統合すると、Hadoopシステム上のファイルからデータを組み込むOracle CQL問合せコードを記述できます。
Hadoopシステムを統合する際には、次のガイドラインに留意してください。
Hadoopクラスタは、その独自のメカニズムによって起動され、アクセス可能であることが必要です。クラスタはOracle Stream Analyticsによって直接管理されません。
Hadoopシステムのファイルは、Oracle CQLで単一キーを使用する結合のみをサポートします。ただし、関連付けられたイベント・タイプのプロパティをキーとして使用できます。すなわち、型がバイト配列であるキーを除いて、文字列型以外の型のキーを使用できます。
結合には等号演算子を使用する必要があります。その他の演算子は、結合条件ではサポートされません。
Hadoopファイルのデータを表すために定義するイベント・タイプの場合、タプルベースのイベント・タイプのみがサポートされます。
イベント・タイプ指定でのプロパティの順序は、Hadoopファイルでのフィールドの順序と一致させる必要があります。
NullPointerExeptionの発生を回避するため、サーバーのシャットダウンまたはアンデプロイを実行する前に、Hadoopデータ・カートリッジの処理を完了するまで待ちます。
Oracle CQLに対応する次のHadoopのデータ型のみがサポートされます。それ以外のデータ型では、構成上の例外が発生が発生します。
表5-1 Oracle CQLとHadoop間のデータ型マッピング
Oracle CQLデータ型 | Hadoopデータ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hadoopデータ・ソースがOracle Stream Analyticsアプリケーションでどのように使用されるかを理解するには、大量の顧客の購入データにリアル・タイムで迅速にアクセスする必要があるアプリケーションによるシナリオを考えてみます。
この場合、Hadoopに格納されているデータには、全店の顧客全員によるすべての購入が含まれています。データの値には、顧客ID、店舗ID、製品IDなどが含まれます。購入データには、各店舗での売れ筋製品についての情報が含まれます。データを管理可能な状態にレンダリングするには、データを調べ、上位購買者(購買奨励策の送付先)のリストを作成するために、MapReduce関数が使用されます。
このデータは、製品のお薦め情報や購買奨励策(クーポンなど)を顧客に送るために設計されたサービスの一部として、モバイル・アプリケーション・メーカーにより収集および管理されます。データは複数の小売業者から収集され、小売業者ごとに別々に管理されます。
Oracle Stream Analyticsアプリケーションは、上位購入者に購買奨励策を提供するために設計されたクライアント側のモバイル・アプリケーションに中間層ロジックを提供します。これは次のように機能します。
既存のHadoopシステムのファイルをイベント処理ネットワークに統合することにより、Oracle Stream Analyticsに含まれるHadoopサポートを使用します。ファイルを統合することにより、Oracle CQLコードからそのファイルのデータにアクセスできます。
ここでは、以下の項目について説明します。
Oracle Stream AnalyticsからHadoopを使用するには、最初にOracle Stream AnalyticsおよびHadoopサーバーの両方の構成を変更する必要があります。
Oracle Stream Analyticsサーバーで、サーバーのbootclasspathにHadoop構成ファイル、core-site.xml
、hdfs.xml
およびmapred.xml
を追加します。
Hadoopサーバーに対しては、Pig JARファイルをlibディレクトリにコピーし、hadoop-env.sh
ファイルに定義されたHADOOP_CLASSPATH
の一部として含めます。
注意:
カートリッジを介したHadoopデータ・ソースとの接続には、多くの入出力操作が必要になる可能性があり、アプリケーションのデプロイ解除でタイムアウトになったり、エラーが発生して、アプリケーションを再びデプロイできなくなったりします。Hadoopカートリッジを使用するアプリケーションのデプロイを解除する前には、必ずアプリケーションへのイベント・フローを中断してください。
既存のHadoopシステムからのファイルの統合は、既存のリレーショナル・データベースから表を統合する方法と似ています。Hadoopファイルの場合、Hadoopサポート用に特別に追加されたOracle Stream AnalyticsスキーマのXML要素file
を使用できます。
ファイルの要素は、http://www.oracle.com/ns/ocep/hadoopネームスペースからのものです。そのため、EPNアセンブリ・ファイルは、そのネームスペースを参照する必要があります。file
要素には次の属性があります。
id
: EPN内のそのファイルを一意に識別します。この属性値を使用して、プロセッサ内のデータ・ソースを参照します。
event-type
: ファイルのデータのバインド先であるイベント・タイプの参照。イベント・タイプは、EPNで定義されている必要があります。
path
: Hadoopファイル・システム内のファイルへのパス。
separator
: オプション。Hadoopファイル内の行を別々のフィールドに分解するときに使用するキャラクタ・デリミタ。デフォルトのデリミタはカンマ( , )文字です。
operation-timeout
: オプション。操作が完了するまでの最大待機時間(ミリ秒単位)。
統合するHadoopファイルをファイル要素で指定して、表ソース要素を使用して、ファイルのデータを使用するOracle CQLプロセッサ用のデータ・ソースとしてそのファイルを追加します。
次の例では、http://www.oracle.com/ns/ocep/hadoop
ネームスペース(およびhadoop
接頭辞)がBean要素で参照されることに注意してください。file
要素では、イベント・タイプ・リポジトリで定義されたCustomerDescription
イベント・タイプの他に、CustomerDescription.txt
ファイルがデータとして参照されています。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xmlns:hadoop="http://www.oracle.com/ns/ocep/hadoop" xsi:schemaLocation=" http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/ocep-epn.xsd http://www.oracle.com/ns/ocep/hadoop http://www.oracle.com/ns/ocep/hadoop/ocep-hadoop.xsd"> <!-- Some schema references omitted for brevity. --> <!-- Event types that will be used in the query. --> <wlevs:event-type-repository> <wlevs:event-type type-name="SalesEvent"> <wlevs:class>com.bea.wlevs.example.SalesEvent</wlevs:class> </wlevs:event-type> <wlevs:event-type type-name="CustomerDescription"> <wlevs:properties> <wlevs:property name="userId" type="char"/> <wlevs:property name="creditScore" type="int"/> <wlevs:property name="address" type="char"/> <wlevs:property name="customerName" type="char"/> </wlevs:properties> </wlevs:event-type> </wlevs:event-type-repository> <!-- Input adapter omitted for brevity. --> <!-- Channel sending SalesEvent instances to the processor. --> <wlevs:channel id="S1" event-type="SalesEvent" > <wlevs:listener ref="P1"/> </wlevs:channel> <!-- The file element to integrate CustomerDescription.txt file from the Hadoop system into the EPN. --> <hadoop:file id="CustomerDescription" event-type="CustomerDescription" path="CustomerDescription.txt" /> <!-- The file from the Hadoop system tied into the query processor with the table-source element. --> <wlevs:processor id="P1"> <wlevs:table-source ref="CustomerDescription" /> </wlevs:processor> <!-- Other stages omitted for brevity. --> </beans>
Hadoopファイルをイベント処理ネットワークに統合すると、Oracle CQLコードからそのファイルを問い合せることができます。
次の例は、HadoopシステムのファイルをEPNに追加する方法を示しています。ファイルがEPNに追加されると、次の例のようにOracle CQLコードからの問合せが可能です。
次の例では、プロセッサがSalesEventインスタンスをチャネルから受信しますが、HadoopシステムのファイルにもCustomerDescriptionインスタンスと同様にアクセスできます。Hadoopファイルは、基本的に顧客をリストするCSVファイルです。どちらのイベント・タイプにもuserId
プロパティがあります。
<n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd" xmlns:n1="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <processor> <name>P1</name> <rules> <query id="q1"><![CDATA[ SELECT customerName, creditScore, price, item FROM S1 [Now], CustomerDescription as cust WHERE S1.userId = cust.userId AND S1.price > 1000 ></query> </rules> </processor> </n1:config>
Oracle NoSQLデータベースは、分散型のキー値データベースです。このデータベースでは、データはキー値ペアで格納されており、これらのペアは特定のストレージ・ノードに記述されています。高可用性、ノード障害時のラピッド・フェイルオーバー、問合せの最適なロード・バランシングを確保するために、ノードはレプリケートされます。
このマニュアルの内容は、読者がOracle NoSQL Databaseにすでに精通していて、運用しているものと想定しています。Oracle NoSQLの詳細は、Oracle Technology Networkページ(http://www.oracle.com/technetwork/database/database-technologies/nosqldb/documentation/index.html)
を参照してください。
注意:
NoSQLデータ・カートリッジを使用するには、NoSQL Enterprise Editionのライセンスが必要です。
Oracle Stream Analytics NoSQL Databaseデータ・カートリッジを使用すると、Oracle CQL問合せの一部として、Oracle NoSQL Databaseに保存されたデータを参照できます。カートリッジにより、問合せでは、キーを指定し、そのキーに関連付けられた値のフィールドを参照することで、Oracle NoSQL Databaseストアから値を取得できます。
Oracle NoSQL Databaseを統合する際には、次のガイドラインに留意してください。
NoSQL Databaseは、その独自のメカニズムによって起動され、アクセス可能であることが必要です。Oracle Stream Analyticsによって直接管理されてはいません。
このリリースのカートリッジは、Oracle NoSQL Database APIリリース2.1.54を使用してデータベースへのアクセスを提供します。
問合せでキーとして使用されるプロパティは、String
型であることが必要です。結合では単一のキーのみを使用できます。
結合には等号演算子を使用する必要があります。その他の演算子は、結合条件ではサポートされません。
NoSQL Databaseを使用するランナウェイ問合せはサポートされません。ランナウェイ問合せの実行時間は、オプティマイザが予測する実行時間より長くなります。
Oracle Stream Analytics NoSQLカートリッジはカートリッジID com.oracle.cep.cartridge.nosqldb
を使用します。
CQLアプリケーションでOracle Stream Analytics NoSQL Databaseデータ・カートリッジを使用するには、1つ以上のアプリケーションの有効範囲内にあるカートリッジ・コンテキストで、そのアプリケーション用に宣言し、構成する必要があります。
既存のNoSQL Databaseの統合は、リレーショナル・データベースの表を統合する方法と似ています。NoSQL Databaseの場合、EPNアセンブリ・ファイルを次の方法で更新します(手順3の例を参照)。
次の例は、イベント処理ネットワークをNoSQL Databaseに接続する方法を示しています。store
要素は、ホストkvhost-alpha上のポート5000またはホストkvhost-beta上のポート5010を使用して最初の接続を行い、"kvstore-customers"という名前のストアへのアクセスを提供します。Oracle CQLプロセッサP1を定義し、キー/値ストアのデータを"CustomerDescription"という名前のリレーションとしてP1で使用できるようにします。
ストアは、"CustomerDescription"の名前を使用して、Oracle CQL問合せ内で参照できます。ストアから取得される値はすべて、CustomerDescriptionクラスのシリアライズ・インスタンスです。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xmlns:nosqldb="http://www.oracle.com/ns/oep/nosqldb" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/ocep-epn.xsd http://www.oracle.com/ns/oep/nosqldb http://www.oracle.com/ns/oep/nosqldb/oep-nosqldb.xsd"> <!-- Provide access to the CustomerDescription class, which represents the type of values in the store. --> <wlevs:event-type-repository> <wlevs:event-type type-name="CustomerDescription"> <wlevs:class>com.bea.wlevs.example.CustomerDescription</wlevs:class> </wlevs:event-type> <wlevs:event-type type-name="SalesEvent"> <wlevs:class>com.bea.wlevs.example.SalesEvent</wlevs:class> </wlevs:event-type> </wlevs:event-type-repository> <!-- The store element declares the key-value store, along with the event type to which incoming NoSQL data will be bound. --> <nosqldb:store store-name="kvstore-customers" store-locations="kvhost-alpha:5000 kvhost-beta:5010" id="CustomerDescription" event-type="CustomerDescription"/> <wlevs:channel id="S1" event-type="SalesEvent"> <wlevs:listener ref="P1"/> </wlevs:channel> <!- The table-source element links the store to the CQL processor. --> <wlevs:processor id="P1"> <wlevs:table-source ref="CustomerDescription" /> </wlevs:processor> </beans>
Oracle CQL問合せでstore
要素により指定したストア内のエントリを参照する場合、それらのエントリの値は、イベントタイプ属性で指定した型のシリアライズ・インスタンスであることが必要です。イベント・タイプ・クラスはjava.io.Serializable
を実装する必要があります。
有効でないシリアライズ形式のストアから問合せで値を取得する場合、または指定されたクラスのシリアル化形式でない値の場合は、Oracle Stream Analyticsで例外が発生し、イベント処理が停止します。複数のstore
要素を宣言して、同一または異なるストアから異なるデータ型の値を返すことができます。
NoSQL Databaseをイベント処理ネットワークに統合すると、Oracle CQLコードからデータにアクセスできます。問合せでは、WHERE
句で等価リレーションを指定することで、ストアのエントリを検索できます。
<n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd" xmlns:n1="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <processor> <name>P1</name> <rules> <query id="q1"><![CDATA[ SELECT customerName, creditScore, price, item FROM S1 [Now], CustomerDescription as cust WHERE S1.userId = cust.userId AND creditScore > 5 ></query> </rules> </processor> </n1:config>
この例では、S1チャネルおよびCustomerDescription NoSQLデータ・ソースのデータを表すイベント・タイプ・インスタンスがいずれもJavaBeansクラスとして実装されています。どちらのイベント・タイプもJavaBeansクラスであるため、Oracle CQL問合せでは、イベントのユーザーIDとWHERE
句内の顧客の説明のIDをどちらもJavaBeansプロパティとして扱って等価とすることで、特定のイベントに関連付けられた顧客の説明にアクセスできます。
WHERE S1.userId = CustomerDescription.userId
この句では、イベントのuserId
フィールドの値で指定されたキーを持つストアからエントリを取得することを要求します。ストアからのエントリ取得では、等価リレーションのみがサポートされます。
ストアからエントリが選択されると、そのストアから取得された値のフィールドは、問合せのSELECT
の部分、またはWHERE
句内の追加の句で参照することができます。
SELECT
句で指定したcreditScore
値では、ストアから取得したCustomerDescription
オブジェクトのcreditScore
フィールドの値が問合せの出力に含まれます。WHERE
句のcreditScore
に対する参照でも、問合せはCustomerDescription
creditScore
フィールドの値が5より大きいイベントにさらに制限されます。
ストアからのエントリ取得に使用されるキーは、値をスラッシュ(/)で始めるか、スラッシュを省略するかのいずれかの方法で書式を設定できます。
等価リレーションの左側に指定した値がスラッシュで始まる場合、キーは1つ以上の主要コンポーネントを(必要な場合はマイナー・コンポーネントも)指定するフル・キーとして扱われます。キー・パスの構文の詳細は、http://docs.oracle.com/cd/NOSQL/html/javadoc/index.html
のOracle NoSQL Database APIドキュメントにあるoracle.kv.Key
クラスに関する情報を参照してください。
たとえば、SalesEvent
オブジェクトのuserId
フィールドに値"/users/user42/-/custDesc"がある場合、その値はusersを1つ目の主要コンポーネントとして、ユーザーIDのuser42を2つ目の主要コンポーネントとして、そしてcustDescというマイナー・コンポーネントを指定するフル・キー・パスとして処理されます。
便宜上、等価リレーションの左側に指定した値がスラッシュで始まっていない場合は、キー全体を構成する1つの主要コンポーネントとして処理されます。
ストアからエントリを取得するために使用されるキーは、Oracle CQL問合せでアクセスされる1つのフィールドで完全な形で指定する必要があります。特に、複数のコンポーネントを指定したキー・パスがキー/値ストア内のエントリにアクセスするために必要な場合、問合せによってアクセスされる1つのフィールドにフル・キー・パス式を格納する必要があります。
HBaseビッグ・データ・カートリッジは、HBaseをOracle Stream Analyticsに統合したものです。HBaseは、分散型のバージョニングされた非リレーショナル・データベースであるNOSQLデータベースの一種です。
HBaseビッグ・データ・カートリッジでは、データにアクセスする主な手段としてのSQLはサポートされません。HBaseでは、データを受信するためのJava APIが提供されます。各行にはキーがあります。すべての列は特定の列ファミリに属します。それぞれの列ファミリは、1つまたは複数の修飾子で構成されます。従って、データの取得には行キー、列ファミリおよび列修飾子を組み合せる必要があります。HBaseはRDBMSのないビッグ・データの格納に適しています。
各表には、リレーショナル・データベースのように行キーがあります。HBaseの列修飾子は、NoSqlDBのマイナー・キーの概念に類似しています。たとえば、レコードのメジャー・キーが人物の名前で、マイナー・キーがその人物について格納する別の情報であることがあります。
HBaseでは、優先されるのは効率的なビッグ・データの格納であり、複雑なデータ取得操作の実行ではありません。
次のコードの抜粋は、HBaseでデータを格納して取得する方法の案です。
HBaseConfiguration config = new HBaseConfiguration(); batchUpdate.put("myColumnFamily:columnQualifier1", "columnQualifier1value".getBytes()); Cell cell = table.get("myRow", "myColumnFamily:columnQualifier1"); String valueStr = new String(cell.getValue());
HBaseは様々なアプリケーションのメタデータの格納に使用されます。たとえば、企業は様々な売上と関連付けた顧客情報をHBaseデータベースに格納できます。この場合、HBaseを外部データ・ソースとして使用してCQL問合せを作成できるHBaseビッグ・データ・カートリッジを使用できます。
HBaseデータベース・ストアのEPNコンポーネントは、データ・カートリッジとして提供されます。HBaseデータベース・カートリッジは、次のプロパティを持つ<store>
EPNコンポーネントを提供します。
id
: EPNコンポーネントの名前。
store-location
: domain:client port
の形式で表される、HBaseデータベース・サーバーの場所。
event-type
: CQLプロセッサにより表示される格納用のスキーマ。イベント・タイプ・クラスはjava.io.Serializable
インタフェースを実装するJavaクラスである必要があります。
table-name
: HBase表の名前。
name
: マッピングが宣言されている<store>
EPNコンポーネントのID。
rowkey
: HBase表で使用される行キーの属性。String
型である必要があります。
cql-attribute
: CQL問合せで使用されるCQL属性の名前。この名前は、Javaイベント・タイプで宣言された対応するフィールドと一致する必要があります。
hbase-family
: HBase列ファミリ。
hbase-qualifer
: HBase列修飾子。
HBaseカートリッジを使用するには、cql-attribute
がプリミティブ・データ型の場合、hbase-family
およびhbase-qualifier
を指定する必要があります。
次の例のように、<hbase:store>
コンポーネントはtable-source要素を使用してCQLプロセッサにリンクされます。
<hbase:store id="User" table-name="User" event-type="UserEvent" store-location="localhost:5000"> </hbase:store> <wlevs:processor id="P1"> <wlevs:table-source ref="User"/> </wlevs:processor>
次の例のように、Oracle Stream Analytics HBase構成ファイルで<hbase:store>
コンポーネントの列のマッピングを指定する必要があります。
例5-1 HBaseカートリッジの列のマッピング
次の例では、CQL列address
はマップで、address
列ファミリからのすべての列修飾子を持っています。CQL列firstname
、lastname
、email
およびrole
は、プリミティブ・データ型のデータを格納します。data
列ファミリからの固有の列修飾子があります。イベント・タイプからのuserName
フィールドは行キーで、そのため、HBase列ファミリまたは修飾子へのマッピングはありません。
<hbase:column-mappings> <name>User</name> <rowkey>userName</rowkey> <mapping cql-attribute="address" hbase-family="address"/> <mapping cql-attribute="firstname" hbase-family="data" hbase-qualifier="firstname"/> <mapping cql-attribute="lastname" hbase-family="data" hbase-qualifier="lastname"/> <mapping cql-attribute="email" hbase-family="data" hbase-qualifier="email"/> <mapping cql-attribute="role" hbase-family="data" hbase-qualifier="role"/> </hbase:column-mappings>
<UserEvent>
クラスには次のフィールドがあります。
String userName; java.util.Map address; String first name; String lastname; String email; String role;
HBaseスキーマの性質は動的で、HBase表が作成された後はいつでも、追加の列ファミリまたは列修飾子(あるいはその両方)を追加できます。Oracle Stream Analyticsでは、すべての動的に追加された列修飾子を含むマップとしてイベント・フィールドを取得できます。この場合、java.util.Map
をJavaイベント・タイプでイベント・フィールドのひとつとして宣言する必要があります。そのため、UserEvent
イベント・タイプには、名前とアドレスの両方を持つjava.util.Map
フィールドが必要です。カートリッジでは、動的に追加された列ファミリはサポートされません。そのため、Oracle Stream Analyticsアプリケーションが新しく追加された列ファミリを使用する必要がある場合、イベント・タイプを変更する必要があります。
HBaseデータベースはクラスタとして実行される場合があります。マスター・ノードのhostname
およびclient port
を構成する必要があります。
サポートされている演算子
現在は、=
、 !=
、like
、<
および>
演算子のみがサポートされています。問合せの最初の従属句は、行キーに基づくHBaseデータ・ソースとの等結合である必要があります。
S1.userName = user.userName
like
演算子は、Java正規表現を引数として受け入れます。この演算子はString
型のみに使用できます。user.firstname like Y.*
<
および>
演算子は、integer
およびdouble
データ型のみに使用できます。
HBaseカートリッジは、リリース12.2.1においていくつかの制限があります。
HBaseカートリッジの制限は次のとおりです。
HBaseサーバーのバージョン0.94.8のみがサポートされています。
HBaseサーバーが使用不可能な場合、HBaseカートリッジ・アプリケーションをOracle Stream Analyticsサーバーにデプロイできません。
HBaseアプリケーションがOracle Stream Analyticsにデプロイされた後でHBaseサーバーが停止した場合、Oracle Stream Analyticsサーバーを再起動しなければ、HBaseサーバーに再接続できません。
HBase表の行キーと結合する場合、イベント・プロパティのデータ型はString
である必要があります。
HBaseカートリッジ・アプリケーションでは、store id
およびtable-name
の名前の両方が、スプリング・ファイルのHBaseカートリッジのものと一致する必要があります。一致しない場合、表の識別は失敗します。
HBaseイベント・プロパティのデータ型には、ラッパー・データ型の整数または倍精度浮動小数点数を使用して、ランタイム例外を回避します。
HBaseカートリッジ・アプリケーションのCQL問合せで構文エラーがある場合、明確なエラー・メッセージは表示されません。
値がNULLの文字列をHBase行キーに結合しようとすると、ランタイム例外が発生します。
CQL問合せの最初の従属句は、行キーに基づくHBaseデータ・ソースとの等結合である必要があります。
CQL問合せで=
または!=
演算子をdouble
データ型に使用する場合、文字dをdouble
データ型の値の後ろに付ける必要があります。