すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:FeatureStore SDK for Java

最終更新日:Aug 01, 2024

このトピックでは、FeatureStore SDK for Javaを使用して、オンラインデータストアからオフライン機能、リアルタイム機能、シーケンス機能などのデータを読み取る方法について説明します。

前提条件

  • プロジェクト、フィーチャエンティティ、フィーチャビュー、およびモデルフィーチャがFeatureStoreで作成されます。 データはオンラインとオフラインのデータストア間で同期されます。 詳細については、「FeatureStoreでのプロジェクトの設定」をご参照ください。

  • Alibaba CloudアカウントのAccessKeyペアが取得されます。 詳細については、「AccessKey の作成」をご参照ください。

    AccessKey IDとAccessKeyシークレットを環境変数に格納することを推奨します。 詳細については、「Alibaba Cloud Darabonba SDK For Python」トピックの手順2: 環境変数の設定セクションをご参照ください。

FeatureStore SDK for Javaのインストール

FeatureStore SDK for Javaをダウンロードしてインストールします。

FeatureStoreクライアントの初期化

API

Configurationクラスを初期化します。

Configuration configuration = new Configuration(regionId,accessKeyId,accessKeySecret,projectName);

Parameters

パラメーター

説明

regionId

cn-hangzhou

FeatureStoreクライアントが存在するリージョンのID。

accessKeyId

System.getenv("ACCESS_KEY_ID")

環境変数から取得されるAccessKey ID。

accessKeySecret

System.getenv("ACCESS_KEY_SECRET")

環境変数から取得されるAccessKeyシークレット。

projectName

holo_pro

FeatureStoreプロジェクトの名前。

説明

FeatureStoreクライアントを仮想プライベートクラウド (VPC) で実行して、FeatureStore SDK for Javaがオンラインデータストアに直接接続できるようにする必要があります。 たとえば、FeatureStore SDK For Javaは、特定のVPC経由でのみHologresインスタンスまたはGraphComputeインスタンスにアクセスできます。

public class Constants {
    public static String accessId = "";
    public static String accessKey = "";
    public static String host = "paifeaturestore.cn-hangzhou.aliyuncs.com";

    static {
        accessId = System.getenv("ACCESS_KEY_ID");// The System.getenv("") method is used to obtain the value of an environment variable.
        accessKey = System.getenv("ACCESS_KEY_SECRET");
    }
}
// Initialize the Configuration class.
Configuration configuration = new Configuration("cn-hangzhou",Constants.accessId,
                                                Constants.accessKey,"dec8");
configuration.setDomain(Constants.host);
ApiClient apiClient = new ApiClient(configuration);
FeatureStoreClient fsclient = new FeatureStoreClient(apiClient);

フィーチャビューからフィーチャデータを取得する

API

public FeatureResult getOnlineFeatures(String[] joinIds);// Query the full table without specifying aliases for specific fields.
public FeatureResult getOnlineFeatures(String[] joinIds, String[] features, Map<String, String> aliasFields);

Parameters

パラメーター

説明

joinIds

{"100001167","100001168"}

主キーフィールドの値の配列。 主キーフィールドの指定された値に基づいてデータが照会されます。

features

{"user_id","city"}

注: 新しいString[]{"*"} を使用して、テーブル内のすべてのフィールドを照会できます。

テーブルで照会されるフィールド。

aliasFields

{"user_id":"uId"}

テーブルのフィールドに指定されているエイリアス。 エイリアスは、返されるデータに表示されます。

  • 例1: オフラインフィーチャビューからフィーチャデータを取得する

    • オフラインフィーチャビューを取得し、フィーチャビューからフィーチャデータを取得する

      // get FeatureView By name
      //mo1(Offline FeatureView)
      FeatureView mo1 = project.getFeatureViewMap().get("mo1");
      if(mo1==null){
          throw new RuntimeException("This featureView is not exist");
      }
      
      HashMap<String, String> ss = new HashMap<>();
      FeatureResult features = mo1.getOnlineFeatures(new String[]{"100001167", "100004088","100006646"}, new String[]{"*"}, ss);
    • レスポンスの例

      [
        {
          "user_id":100001167,
          "gender":"male",
          "age":28, 
          "city":"Shenyang"
          "item_cnt":0,
          "follow_cnt":0,
          "follower_cnt":0,
          "register_time":1696658585,
          "tags":"2",
        }
        {
          "user_id":100004088,
          "gender":"female",
          "age":28, 
          "city":"Changchun"
          "item_cnt":0,
          "follow_cnt":8,
          "follower_cnt":0,
          "register_time":1695618449,
          "tags":"1",
        }
        {
          "user_id":100006646,
          "gender":"male",
          "age":28, 
          "city":"Changchun"
          "item_cnt":0,
          "follow_cnt":1,
          "follower_cnt":1,
          "register_time":1698213339,
          "tags":"1",
        }
      ]
  • 例2: リアルタイムフィーチャビューからフィーチャデータを取得する

    • リアルタイムフィーチャビューを取得し、フィーチャビューからフィーチャデータを取得する

      // get FeatureView By name
      //tfv1(Online FeatureView)
      FeatureView tfv1 = project.getFeatureViewMap().get("tfv1");
      if(tfv1==null){
      throw new RuntimeException("This featureView is not exist");
      }
      //Get data
      FeatureResult rf = tfv1.getOnlineFeatures(new String[]{"35d3d5a52a7515c2ca6bb4d8e965149b", "0ab7e3efacd56983f16503572d2b9915","84dfd3f91dd85ea105bc74a4f0d7a067"}, new String[]{"*"}, ss);
    • レスポンスの例

      [
        {
          "USER_MD5":"35d3d5a52a7515c2ca6bb4d8e965149b", 
          "USER_NICKNAME":"Tom" 
        }
        {
          "USER_MD5":"0ab7e3efacd56983f16503572d2b9915", 
          "USER_NICKNAME":"Jack"
        }
        {
          "USER_MD5":"84dfd3f91dd85ea105bc74a4f0d7a067", 
          "USER_NICKNAME":"Jerry"
        }
      ]
  • 例3: シーケンスフィーチャビューからフィーチャデータを取得する

    • シーケンスフィーチャビューを取得し、フィーチャビューからフィーチャデータを取得する

      // get FeatureView By name
      //ots_seq2(Sequence FeatureView)
      SequenceFeatureView ots_seq2 = project.getSeqFeatureView("ots_seq2");
      if(ots_seq2==null){
          throw new RuntimeException("This featureView is not exist");
      }
      //get data
      FeatureResult features2 = ots_seq2.getOnlineFeatures(new String[]{"157843277", "157843278"});
            
    • レスポンスの例

      [
        {
          "click _50_seq_playtime":"null;15.0",
          "click_50_seq_event_time":"null;1704684504747",
          "click_50_seq_ts":"625662604;625662604",
          "user_id":"157843277",
          "click_50_seq":"null;200167895",
          "click_50_seq_event":"null;click",
          "click_50_seq_item_id":"null;200167895"
        }
        {
          "click_50_seq_playtime":"null;15.0",
          "click_50_seq_event_time":"null;1704684504747",
          "click_50_seq_ts":"625662604;625662604",
          "user_id":"157843278",
          "click_50_seq":"null;200167895",
          "click_50_seq_event":"null;click",
          "click_50_seq_item_id":"null;200167895"
        }
      ]

モデルフィーチャからフィーチャデータを取得する

API

public FeatureResult getOnlineFeatures(Map<String, List<String>> joinIds);
public FeatureResult getOnlineFeaturesWithEntity(Map<String, List<String>> joinIds, String featureEntityName);

Parameters

パラメーター

説明

joinIds

[

"user_id":

{"101598051" 、

"101598471" 、

「101601287」

}

]

結合ID値のマップ。 各map要素は、特定の結合IDのキーと値のペアです。 キーは結合IDの名前ですが、値は結合IDの値です。

featureEntityName

"user"

フィーチャデータをクエリするフィーチャエンティティの名前。

  • 例1: モデルフィーチャからフィーチャデータを取得し、シーケンスフィーチャデータを除く

    各モデル特徴は、複数の特徴エンティティに関連付けることができる。 複数の結合IDを指定して、対応するフィーチャを一度に取得できます。

    この例では、user_idおよびitem_idjoin idが指定されています。 各結合IDに対して、同じ数の値を指定する必要があります。

    //Obtain model features
    Model mf1 = project.getModelFeature("model_ots1");
    HashMap<String, List<String>> mm = new HashMap<>();
    mm.put("user_id", Arrays.asList("101598051", "101598471", "101601287"));
    mm.put("item_id",Arrays.asList("200004157", "200006185", "200034730"));
    • モデルフィーチャに関連付けられているすべてのフィーチャエンティティからフィーチャデータを取得

      • モデルフィーチャに関連付けられているすべてのフィーチャエンティティからフィーチャデータを取得する

        //Get the data that all associated entities contain
        FeatureResult fr1 = mf1.getOnlineFeatures(mm);
      • レスポンスの例

        [
          {
            "user_id":101598051,
            "gender":"male",
            "age":28, 
            "city":"Hangzhou",
            "item_cnt":0,
            "follow_cnt":0,
            "follower_cnt":0,
            "register_time":1695785665,
            "tags":"1",
            "item_id":200004157,
            "author":137649839, 
            "category":2,
            "click_count":0,
            "duration":18.0,
            "praise_count":30,
            "pub_time":1698208690,
            "title":"#Workout Tracking"
          }
          {
            "user_id":200004157,
            "gender":"female",
            "age":31, 
            "city":"Shenzhen"
            "item_cnt":0,
            "follow_cnt":1,
            "follower_cnt":0,
            "register_time":1695726582,
            "tags":"1",
            "item_id":200006185,
            "author":134195601, 
            "category":14,
            "click_count":50,
            "duration":55.0,
            "praise_count":21,
            "pub_time":1696700908,
            "title":"#Idiom Story"
          }
          {
            "user_id":101601287,
            "gender":"female",
            "age":33, 
            "city":"Shenzhen"
            "item_cnt":0,
            "follow_cnt":0,
            "follower_cnt":55,
            "register_time":1697519102,
            "tags":"0",
            "item_id":200034730,
            "author":112739045, 
            "category":6,
            "click_count":2,
            "duration":9.0,
            "praise_count":0,
            "pub_time":1696568654,
            "title":"#Workout Tracking"
          }
        ]
    • モデルフィーチャに関連付けられている特定のフィーチャエンティティのフィーチャデータの取得

      • モデルフィーチャに関連付けられている特定のフィーチャエンティティのフィーチャデータを取得する

        // Retrieve only the feature data of the server feature entity.
        FeatureResult fr2 = mf1.getOnlineFeaturesWithEntity(mm, "server");
      • レスポンスの例

        [
        	{
            "item_id":200004157, 
            "author":137649839, 
            "category":2,
            "click_count":0,
            "duration":18.0,
            "praise_count":30,
            "pub_time":1698208690,
            "title":"#Workout Tracking"
          },
          {
            "item_id":200006185,
            "author":134195601, 
            "category":14,
            "click_count":50,
            "duration":55.0,
            "praise_count":21,
            "pub_time":1696700908,
            "title":"#Idiom Story"
          },
          {
            "item_id":200034730,
            "author":112739045, 
            "category":6,
            "click_count":2,
            "duration":9.0,
            "praise_count":0,
            "pub_time":1696568654,
            "title":"#Workout Tracking"
          }
        ]
  • 例2: モデルフィーチャからフィーチャデータ (シーケンスフィーチャデータを含む) を取得

    各モデル特徴は、複数の特徴エンティティに関連付けることができる。 複数の結合IDを指定して、対応するフィーチャを一度に取得できます。

    この例では、user_idという結合IDが使用されています。

    // Retrieve feature data from a model feature, including sequence feature data.
    Model mdt1 =project.getModelFeature("mdt1");
    if(mdt1==null){
        throw new RuntimeException("This modelFeature is not exist");
    }
    HashMap<String, List<String>> fsmap = new HashMap<>();
    fsmap.put("user_id",Arrays.asList("100001167","100024146"));
    fsmap.put("item_id",Arrays.asList("200138790","200385417"));
    • モデルフィーチャに関連付けられているすべてのフィーチャエンティティからフィーチャデータを取得

      • モデルフィーチャに関連付けられているすべてのフィーチャエンティティからフィーチャデータを取得する

        FeatureResult fr3 = mdt2.getOnlineFeatures(fsmap);
      • レスポンスの例

        [
          {
            "click_50_seq_event_time":"null;1698170945",
            "gender":"male",
            "click_50_seq_ts":"1704292557212;1704292557212",
            "city":"Shenyang",
            "item_id":"200138790",
            "click_50_seq":"null;204153583",
            "author":186784264,
            "pub_time":1696574947,
            "follower_cnt":0,
            "follow_cnt":0,
            "item_cnt":0,
            "click_count":2,
            "title":"#Idiom Story",
            "register_time":1696658585,
            "tags":2,
            "duration":13.0,
            "click_50_seq_playtime":"null;98.93932923011255",
            "user_id":"100001167",
            "praise_count":3,
            "click_50_seq_event":null;click,
            "category":20,
            "click_50_seq_item_id":null;204153583,
            "age":28,
          }
          {
          "click_50_seq_event_time":"null;1698180365",
          "gender":"male",
          "click_50_seq_ts":"1704292547792;1704292547792;1704292547792",
          "city":"Ningbo",
          "item_id":200385417,
          "click_50_seq":"null;299049390",
          "author":189247964,
          "pub_time":1696432224,
          "follower_cnt":47,
          "follow_cnt":0,
          "item_cnt":0,
          "click_count":4,
          "title":"#Idiom Story",
          "register_time":1697253820,
          "tags":1,
          "duration":"9.0",
          "click_50_seq_playtime":"null;32.15018252408633",
          "user_id":100024146,
          "praise_count":0,
          "click_50_seq_event":"null;click",
          "category":0,
          "click_50_seq_item_id":"null;299049390",
          "age":28,
          }
          {
          "click_50_seq_event_time":"null;1698170945",
          "gender":"male",
          "click_50_seq_ts":"1704292557212;1704292557212",
          "city":"Shenyang",
          "item_id":200138790,
          "click_50_seq":"null;204153583",
          "author":186784264,
          "pub_time":1696574947,
          "follower_cnt":0,
          "follow_cnt":0,
          "item_cnt":0,
          "click_count":2,
          "title":"#Idiom Story",
          "register_time":1696658585,
          "tags":2,
          "duration":13.0,
          "click_50_seq_playtime":"null;98.93932923011255",
          "user_id":"100001167",
          "praise_count":3,
          "click_50_seq_event":"null;click",
          "category":20,
          "click_50_seq_item_id":"null;204153583",
          "age":28,
          }
          {
          "click_50_seq_event_time":"null;1698180365",
          "gender":"male",
          "click_50_seq_ts":"1704292547792;1704292547792",
          "city":"Ningbo",
          "item_id":200385417,
          "click_50_seq":"null;299049390",
          "author":189247964,
          "pub_time":1696432224,
          "follower_cnt":47,
          "follow_cnt":0,
          "item_cnt":0,
          "click_count":4,
          "title":"#Idiom Story",
          "register_time":1697253820,
          "tags":1,
          "duration":9.0
          "click_50_seq_playtime":"null;32.15018252408633",
          "user_id":"100024146",
          "praise_count":"0",
          "click_50_seq_event":"null;click",
          "category":0,
          "click_50_seq_item_id":"null;299049390",
          "age":28,
          }
        ]
    • モデルフィーチャに関連付けられている特定のフィーチャエンティティのフィーチャデータの取得

      • モデルフィーチャに関連付けられている特定のフィーチャエンティティのフィーチャデータを取得する

        FeatureResult fr4 = mdt1.getOnlineFeaturesWithEntity(fsmap, "client");
      • レスポンスの例

        [
          {
            "click_50_seq_event_time":"null;1698170945"
            "gender":"male"
            "click_50_seq_ts":"1704292555552;1704292555552"
            "city":"Shenyang"
            "click_50_seq":"null;204153583"
            "follower_cnt":0
            "follow_cnt":0
            "item_cnt":0
            "register_time":1696658585
            "tags":2
            "click_50_seq_playtime":"null;98.93932923011255"
            "user_id":"100001167"
            "click_50_seq_event":"null;click"
            "click_50_seq_item_id":"null;204153583"
            "age":28
          }
          {
            "click_50_seq_event_time":"null;1698180365",
            "gender":"male",
            "click_50_seq_ts":1704292546132;1704292546132;1704292546132,
            "city":"Ningbo",
            "click_50_seq":"null;299049390"
            "follower_cnt":47,
            "follow_cnt":0,
            "item_cnt":0,
            "register_time":1697253820,
            "tags":"1",
            "click_50_seq_playtime":"null;32.15018252408633",
            "user_id":100024146,
            "click_50_seq_event":"null;click",
            "click_50_seq_item_id":"null;299049390",
            "age":28
          }
          {
            "click_50_seq_event_time":"null;1698170945",
            "gender":"male",
            "click_50_seq_ts":"1704292555552;1704292555552",
            "city":"Shenyang",
            "click_50_seq":"null;204153583",
            "follower_cnt":0,
            "follow_cnt":0,
            "item_cnt":0,
            "register_time":1696658585,
            "tags":2,
            "click_50_seq_playtime":"null;98.93932923011255",
            "user_id":"100001167",
            "click_50_seq_event":"null;click",
            "click_50_seq_item_id":"null;204153583",
            "age":28
          }
          {
            "click_50_seq_event_time":"null;1698180365",
            "gender":"male",
            "click_50_seq_ts":"1704292546132;1704292546132;1704292546132",
            "city":"Ningbo",
            "click_50_seq":"null;299049390",
            "follower_cnt":47,
            "follow_cnt":0,
            "item_cnt":0,
            "register_time":1697253820,
            "tags":1,
            "click_50_seq_playtime":"null;32.15018252408633"
            "user_id":"100024146",
            "click_50_seq_event":"null;click",
            "click_50_seq_item_id":"null;299049390",
            "age":28
          }
        ]