このトピックでは、FeatureStore SDK for Javaを使用して、オンラインデータストアからオフライン機能、リアルタイム機能、シーケンス機能などのデータを読み取る方法について説明します。
前提条件
プロジェクト、フィーチャエンティティ、フィーチャビュー、およびモデルフィーチャがFeatureStoreで作成されます。 データはオンラインとオフラインのデータストア間で同期されます。 詳細については、「FeatureStoreでのプロジェクトの設定」をご参照ください。
Alibaba CloudアカウントのAccessKeyペアが取得されます。 詳細については、「AccessKey の作成」をご参照ください。
AccessKey IDとAccessKeyシークレットを環境変数に格納することを推奨します。 詳細については、「Alibaba Cloud Darabonba SDK For Python」トピックのIDE での Alibaba Cloud SDK for Python の使用セクションをご参照ください。
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インスタンスにアクセスできます。
例
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_idのjoin 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 } ]