検索

134.4.7. スキャン操作。

download PDF

スキャン操作は HBase のクエリーと同じです。scan 操作を使用して、複数の行を取得できます。結果の一部となる列を指定し、値をオブジェクトに変換する方法を指定するには、URI オプションまたはヘッダーを使用します。

        <route>
            <from uri="direct:in"/>
            <to uri="hbase:mytable?operation=CamelHBaseScan&amp;family=myfamily&amp;qualifier=myqualifier&amp;valueType=java.lang.Long&amp;rowType=java.lang.String"/>
            <to uri="log:out"/>
        </route>

この場合、結果を制限するためのフィルターの一覧も指定する必要があります。フィルターのリストを uri の一部として指定でき、Camel は すべて のフィルターを満たす行のみを返します。
メッセージに含まれる情報を認識するフィルターを設定するために、camel は ModelAwareFilter を定義します。これにより、フィルターはメッセージとマッピングストラテジーで定義されるモデルを考慮に入れることができます。
ModelAwareFilter camel-hbase を使用すると、選択したマッピングストラテジーが in メッセージに適用されます。これは、マッピングをモデル化するオブジェクトを作成し、そのオブジェクトを Filter に渡します。

たとえば、基準としてメッセージヘッダーとして使用してスキャンを実行するには、以下のように ModelAwareColumnMatchingFilter を使用できます。

        <route>
            <from uri="direct:scan"/>
            <!-- Set the Criteria -->
            <setHeader headerName="CamelHBaseFamily">
                <constant>name</constant>
            </setHeader>
            <setHeader headerName="CamelHBaseQualifier">
                <constant>first</constant>
            </setHeader>
            <setHeader headerName="CamelHBaseValue">
                <el>in.body.firstName</el>
            </setHeader>
            <setHeader headerName="CamelHBaseFamily2">
                <constant>name</constant>
            </setHeader>
            <setHeader headerName="CamelHBaseQualifier2">
                <constant>last</constant>
            </setHeader>
            <setHeader headerName="CamelHBaseValue2">
                <el>in.body.lastName</el>
            </setHeader>
            <!-- Set additional fields that you want to be return by skipping value -->
            <setHeader headerName="CamelHBaseFamily3">
                <constant>address</constant>
            </setHeader>
            <setHeader headerName="CamelHBaseQualifier3">
                <constant>country</constant>
            </setHeader>
            <to uri="hbase:mytable?operation=CamelHBaseScan&amp;filters=#myFilterList"/>
        </route>

        <bean id="myFilters" class="java.util.ArrayList">
            <constructor-arg>
                <list>
                    <bean class="org.apache.camel.component.hbase.filters.ModelAwareColumnMatchingFilter"/>
                </list>
            </constructor-arg>
        </bean>

上記のルートは、pojo に properties firstName と lastName がメッセージボディーとして渡されることを想定し、これらのプロパティーを取得し、メッセージヘッダーの一部として追加します。デフォルトのマッピングストラテジーは、ヘッダーを HBase 列にマッピングし、そのモデルを ModelAwareColumnMatchingFilter に渡すモデルオブジェクトを作成します。このフィルターは、モデルに一致する列を含まない行を除外します。これは、たとえばクエリーと同様です。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.