Todos os produtos
Search
Central de documentação

Platform For AI:Gerenciar recursos com o FeatureStore SDK

Última atualização: Jun 27, 2026

Este tópico descreve como usar o kit de desenvolvimento de software (SDK) do FeatureStore para gerenciar recursos em um sistema de recomendação sem utilizar outros produtos da Alibaba Cloud.

Informações básicas

Um sistema de recomendação sugere conteúdo ou produtos personalizados aos usuários com base em seus interesses e preferências. Uma etapa crucial nesse processo é extrair e configurar recursos para usuários e itens. Este documento demonstra como construir um sistema de recomendação usando o FeatureStore e gerenciar dados de recursos com diferentes versões do FeatureStore SDK.

Para obter mais informações sobre o FeatureStore, consulte Visão geral do FeatureStore.

Se você tiver dúvidas durante a configuração ou o uso, participe do nosso grupo no DingTalk (ID: 34415007523) para obter suporte técnico.

Pré-requisitos

Antes de começar, conclua as seguintes preparações.

Produto dependente

Operação específica

Platform for AI (PAI)

MaxCompute

FeatureDB

DataWorks

1. Preparar dados

Sincronizar tabelas de dados

Em um cenário típico de recomendação, prepare três tabelas de dados: uma tabela de recursos de usuário, uma tabela de recursos de item e uma tabela de rótulos.

Para fins de prática, preparamos tabelas de exemplo de usuários, itens e rótulos no projeto do MaxCompute pai_online_project. As tabelas de usuários e itens contêm aproximadamente 100.000 entradas de dados por partição e ocupam cerca de 70 MB de armazenamento no MaxCompute. A tabela de rótulos contém aproximadamente 450.000 entradas de dados por partição e ocupa cerca de 5 MB de armazenamento no MaxCompute.

Execute comandos SQL no DataWorks para sincronizar as tabelas de usuários, itens e rótulos do projeto pai_online_project para seu próprio projeto do MaxCompute. Siga estas etapas:

  1. Faça login no console do DataWorks.

  2. No painel de navegação à esquerda, clique em Data Development and O&M > Data Development.

  3. Selecione o workspace do DataWorks criado e clique em Go to Data Studio.

  4. Passe o mouse sobre Create e escolha Create Node > MaxCompute > MaxCompute SQL. Na caixa de diálogo exibida, configure os parâmetros do nó.

    Parâmetro

    Valor sugerido

    Type

    MaxCompute SQL

    Path

    Business Flow/Workflow/MaxCompute

    Name

    Insira um nome personalizado.

  5. Clique em OK.

  6. Na área do novo nó, execute os seguintes comandos SQL para sincronizar as tabelas de usuários, itens e rótulos do projeto pai_online_project para seu próprio projeto do MaxCompute. Em Resource Group, selecione o grupo de recursos exclusivo criado.

    Sincronizar a tabela de usuários: rec_sln_demo_user_table_preprocess_all_feature_v1 (Clique para detalhes)

    CREATE TABLE IF NOT EXISTS rec_sln_demo_user_table_preprocess_all_feature_v1
    like pai_online_project.rec_sln_demo_user_table_preprocess_all_feature_v1
    STORED AS ALIORC  
    LIFECYCLE 90;
    
    INSERT OVERWRITE TABLE rec_sln_demo_user_table_preprocess_all_feature_v1 PARTITION (ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_user_table_preprocess_all_feature_v1
    WHERE ds >= '20231022' and ds <='20231024';

    Após executar o comando, os dados estarão disponíveis nas três partições seguintes:

    • ds=20231022

    • ds=20231023

    • ds=20231024

    Sincronizar a tabela de itens: rec_sln_demo_item_table_preprocess_all_feature_v1 (Clique para detalhes)

    CREATE TABLE IF NOT EXISTS rec_sln_demo_item_table_preprocess_all_feature_v1
    like pai_online_project.rec_sln_demo_item_table_preprocess_all_feature_v1
    STORED AS ALIORC  
    LIFECYCLE 90;
    
    INSERT OVERWRITE TABLE rec_sln_demo_item_table_preprocess_all_feature_v1 PARTITION(ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_item_table_preprocess_all_feature_v1
    WHERE ds >= '20231022' and ds <='20231024';

    Após executar o comando, os dados estarão disponíveis nas três partições seguintes:

    • ds=20231022

    • ds=20231023

    • ds=20231024

    Sincronizar a tabela de rótulos: rec_sln_demo_label_table (Clique para detalhes)

    CREATE TABLE IF NOT EXISTS rec_sln_demo_label_table
    like pai_online_project.rec_sln_demo_label_table
    STORED AS ALIORC  
    LIFECYCLE 90;
    
    INSERT OVERWRITE TABLE rec_sln_demo_label_table PARTITION (ds)
    SELECT *
    FROM pai_online_project.rec_sln_demo_label_table
    WHERE ds >= '20231022' and ds <='20231024';

    Após executar o comando, os dados estarão disponíveis nas três partições seguintes:

    • ds=20231022

    • ds=20231023

    • ds=20231024

Após concluir essas etapas, visualize a tabela de usuários rec_sln_demo_user_table_preprocess_all_feature_v1, a tabela de itens rec_sln_demo_item_table_preprocess_all_feature_v1 e a tabela de rótulos rec_sln_demo_label_table no seu workspace. Essas três tabelas são usadas como exemplos nas operações a seguir.

Configurar fontes de dados

O FeatureStore geralmente requer duas fontes de dados: um armazenamento offline (MaxCompute) e um armazenamento online (FeatureDB, Hologres ou TableStore). Este tópico usa MaxCompute e FeatureDB como exemplos.

  1. Faça login no PAI console. No painel de navegação à esquerda, clique em Data Preparation > FeatureStore.

  2. Selecione um workspace e clique em Enter FeatureStore.

  3. Configure a fonte de dados do MaxCompute.

    1. Na aba Store, clique em Create Store. Na caixa de diálogo exibida, configure os parâmetros da fonte de dados do MaxCompute.

      Parâmetro

      Valor sugerido

      Type

      MaxCompute

      Name

      Insira um nome personalizado.

      MaxCompute Project Name

      Selecione o projeto do MaxCompute criado.

    2. Copie a instrução de autorização. Em seguida, clique em Ir agora para acessar o DataWorks. Execute a instrução no DataWorks para conceder as permissões necessárias.

      Nota

      A operação de autorização exige que sua conta tenha permissões de administrador. Para mais informações, consulte Gerenciar permissões de usuário usando comandos ou Gerenciar permissões de usuário no console.

    3. Após concluir a configuração, clique em Submit.

  4. Configure a fonte de dados do FeatureDB.

    1. Se você já criou uma fonte de dados do FeatureDB, pule esta etapa.

    2. Na aba Store, clique em Create Store. Na caixa de diálogo exibida, configure os parâmetros da fonte de dados do FeatureDB.

      Parâmetro

      Valor sugerido

      Type

      FeatureDB (Se for sua primeira vez usando, siga as instruções na tela para ativar o FeatureDB)

      Name

      Nomes personalizados não são suportados. O valor padrão é feature_db.

      Username

      Defina um nome de usuário.

      Password

      Defina uma senha.

      High-speed VPC Connection (Optional)

      Após a configuração bem-sucedida, use o FeatureStore SDK em uma VPC para acessar diretamente o FeatureDB através de uma conexão PrivateLink. Isso melhora o desempenho de leitura e gravação de dados e reduz a latência de acesso.

      VPC

      Selecione a VPC onde seu serviço online do FeatureStore está localizado.

      Zone and vSwitch

      Selecione uma zona e um vSwitch. Certifique-se de selecionar o vSwitch na zona onde sua máquina de serviço online está localizada. Recomendamos selecionar vSwitches em pelo menos duas zonas para garantir alta disponibilidade e estabilidade para o seu negócio.

    3. Após concluir a configuração, clique em Submit.

2. Criar e registrar um projeto do FeatureStore

Crie e registre um projeto do FeatureStore usando o console ou um SDK. Como o SDK é necessário para operações subsequentes, como exportar um conjunto de treinamento e sincronizar dados, instale o FeatureStore Python SDK mesmo que utilize o console para a configuração inicial.

Método 1: Usar o console

  1. Crie um projeto do FeatureStore.

    1. Faça login no PAI console. No painel de navegação à esquerda, clique em Data Preparation > FeatureStore.

    2. Selecione um workspace e clique em Enter FeatureStore.

    3. Clique em Create Project. Na caixa de diálogo exibida, configure os parâmetros do projeto.

      Parâmetro

      Valor sugerido

      Name

      Insira um nome personalizado. Este tópico usa fs_demo como exemplo.

      Description

      Insira uma descrição personalizada.

      Offline Store

      Selecione a fonte de dados do MaxCompute criada.

      Online Store

      Selecione a fonte de dados do FeatureDB criada.

    4. Clique em Submit para criar o projeto do FeatureStore.

  2. Crie uma entidade de recurso.

    1. Na página Projects do FeatureStore, clique no nome do projeto para abrir a página de detalhes do projeto.

    2. Na aba Feature Entity, clique em Create Feature Entity. Na caixa de diálogo exibida, configure os parâmetros da entidade de recurso de usuário.

      Parâmetro

      Valor sugerido

      Feature Entity Name

      Insira um nome personalizado. Este tópico usa user como exemplo.

      Join Id

      user_id

    3. Clique em Submit.

    4. Clique em Create Feature Entity. Na caixa de diálogo exibida, configure os parâmetros da entidade de recurso de item.

      Parâmetro

      Valor sugerido

      Feature Entity Name

      Insira um nome personalizado. Este tópico usa item como exemplo.

      Join Id

      item_id

    5. Clique em Submit para criar a entidade de recurso.

  3. Crie uma visualização de recurso.

    1. Na aba Feature View da página de detalhes do projeto, clique em Create Feature View. Na caixa de diálogo exibida, configure os parâmetros da visualização de recurso de usuário.

      Parâmetro

      Valor sugerido

      View Name

      Insira um nome personalizado. Este tópico usa user_table_preprocess_all_feature_v1 como exemplo.

      Type

      Offline

      Write Mode

      Use Offline Table

      Store

      Selecione a fonte de dados do MaxCompute criada.

      Feature Table

      Selecione a tabela de usuários preparada: rec_sln_demo_user_table_preprocess_all_feature_v1.

      Feature Field

      Selecione a chave primária user_id.

      Synchronize Online Feature Table

      Yes

      Feature Entity

      user

      Feature Lifecycle

      Mantenha o valor padrão.

    2. Clique em Submit.

    3. Clique em Create Feature View. Na caixa de diálogo exibida, configure a visualização de recurso de item.

      Parâmetro

      Valor sugerido

      View Name

      Insira um nome personalizado. Este tópico usa item_table_preprocess_all_feature_v1 como exemplo.

      Type

      Offline

      Write Mode

      Use Offline Table

      Store

      Selecione a fonte de dados do MaxCompute criada.

      Feature Table

      Selecione a tabela de itens preparada: rec_sln_demo_item_table_preprocess_all_feature_v1.

      Feature Field

      Selecione a chave primária item_id.

      Synchronize Online Feature Table

      Yes

      Feature Entity

      item

      Feature Lifecycle

      Mantenha o valor padrão.

    4. Após concluir a configuração, clique em Submit para criar a visualização de recurso.

  4. Crie uma tabela de rótulos.

    1. Na aba Label Table da página de detalhes do projeto, clique em Create Label Table. Na caixa de diálogo exibida, configure as informações da tabela de rótulos.

      Parâmetro

      Valor sugerido

      Store

      Selecione a fonte de dados do MaxCompute criada.

      Table Name

      Selecione a tabela de rótulos preparada: rec_sln_demo_label_table.

    2. Clique em Submit.

  5. Crie um recurso de modelo.

    1. Na aba Model Features da página de detalhes do projeto, clique em Create Model Feature. Na caixa de diálogo exibida, configure os parâmetros do recurso de modelo.

      Parâmetro

      Valor sugerido

      Model Feature Name

      Insira um nome personalizado. Este tópico usa fs_rank_v1 como exemplo.

      Select Feature

      Selecione as visualizações de recursos de usuário e item criadas.

      Label Table Name

      Selecione a tabela de rótulos criada: rec_sln_demo_label_table.

    2. Clique em Submit para criar o recurso de modelo.

    3. Na página de lista de recursos de modelo, clique em Details à direita do seu modelo.

    4. Na caixa de diálogo Model Feature Details exibida, na aba Basic Information, visualize o Export Table Name, que é fs_demo_fs_rank_v1_trainning_set. Esta tabela é usada para produção subsequente de recursos e treinamento de modelos.

  6. Instale o FeatureStore Python SDK. Para mais informações, consulte Usar o FeatureStore para gerenciar recursos em um sistema de recomendação.

Método 2: Usar o FeatureStore Python SDK

  1. Faça login no console do DataWorks.

  2. No painel de navegação à esquerda, clique em Resource Groups.

  3. Na aba Exclusive Resource Groups, localize o grupo de recursos cuja Purpose seja Data Scheduling. Clique no ícone image.png ao lado do recurso de agendamento e selecione O&M Assistant.

  4. Clique em Create Command. Na caixa de diálogo exibida, configure os parâmetros do comando.

    Parâmetro

    Valor sugerido

    Nome do Comando

    Insira um nome personalizado. Este tópico usa install como exemplo.

    Tipo de Comando

    Manual Input (pip Command Cannot Be Used To Install Third-party Packages)

    Conteúdo do Comando

    /home/tops/bin/pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple https://feature-store-py.oss-cn-beijing.aliyuncs.com/package/feature_store_py-2.0.2-py3-none-any.whl

    Tempo Limite

    Defina um tempo personalizado.

  5. Clique em Create para criar o comando.

  6. Clique em Run Command. Na caixa de diálogo exibida, clique em Run.

  7. Clique em Refresh para visualizar o status de execução mais recente. Quando o status mudar para Success, a instalação estará concluída.

Para obter etapas detalhadas sobre o uso do SDK, consulte a DSW Gallery.

3. Executar o nó de sincronização de dados

Antes de publicar seu serviço, execute o nó de sincronização de dados regularmente para sincronizar dados do armazenamento offline para o armazenamento online. O serviço online então lê os dados do armazenamento online em tempo real. Este exemplo demonstra como configurar uma tarefa de sincronização recorrente para as tabelas de recursos de usuário e item.

  1. Faça login no console do DataWorks.

  2. No painel de navegação à esquerda, clique em Data Development and O&M > Data Development.

  3. Selecione o workspace do DataWorks criado e clique em Enter Data Development.

  4. Configure a sincronização recorrente para a tabela de usuários.

    1. Passe o mouse sobre Create e escolha New Node > MaxCompute > PyODPS 3.

    2. Copie o seguinte conteúdo para o script para concluir a sincronização recorrente de user_table_preprocess_all_feature_v1.

      from feature_store_py.fs_client import FeatureStoreClient
      import datetime
      from feature_store_py.fs_datasource import MaxComputeDataSource
      import sys
      from odps.accounts import StsAccount
      
      cur_day = args['dt']
      print('cur_day = ', cur_day)
      
      access_key_id = o.account.access_id
      access_key_secret = o.account.secret_access_key
      sts_token = None
      endpoint = 'paifeaturestore-vpc.cn-beijing.aliyuncs.com'
      if isinstance(o.account, StsAccount):
          sts_token = o.account.sts_token
      fs = FeatureStoreClient(access_key_id=access_key_id, access_key_secret=access_key_secret, security_token=sts_token, endpoint=endpoint)
      cur_project_name = 'fs_demo'
      project = fs.get_project(cur_project_name)
      
      feature_view_name = 'user_table_preprocess_all_feature_v1'
      batch_feature_view = project.get_feature_view(feature_view_name)
      task = batch_feature_view.publish_table(partitions={'ds':cur_day}, mode='Overwrite', offline_to_online=True)
      task.wait()
      task.print_summary()
      
    3. No painel de navegação à direita, clique em Scheduling Configuration. Na caixa de diálogo exibida, configure os parâmetros de agendamento.

      Parâmetro

      Valor sugerido

      Scheduling Parameters

      Parameter Name

      dt

      Parameter Value

      $[yyyymmdd-1]

      Resource Properties

      Scheduling Resource Group

      Selecione o grupo de recursos exclusivo criado.

      Scheduling Dependencies

      Selecione a tabela de usuários criada.

    4. Após configurar e testar o nó, salve e envie a configuração do nó.

    5. Realize uma operação de backfill de dados. Para mais informações, consulte Sincronizar tabelas de dados.

  5. Configure a sincronização recorrente para a tabela de itens.

    1. Passe o mouse sobre Create e escolha New Node > MaxCompute > PyODPS 3. Na caixa de diálogo exibida, configure os parâmetros do nó.

    2. Clique em Confirm.

    3. Copie o seguinte conteúdo para o script.

      Sincronização rotineira para item_table_preprocess_all_feature_v1 (Clique para detalhes)

      from feature_store_py.fs_client import FeatureStoreClient
      import datetime
      from feature_store_py.fs_datasource import MaxComputeDataSource
      import sys
      from odps.accounts import StsAccount
      
      cur_day = args['dt']
      print('cur_day = ', cur_day)
      
      access_key_id = o.account.access_id
      access_key_secret = o.account.secret_access_key
      sts_token = None
      endpoint = 'paifeaturestore-vpc.cn-beijing.aliyuncs.com'
      if isinstance(o.account, StsAccount):
          sts_token = o.account.sts_token
      fs = FeatureStoreClient(access_key_id=access_key_id, access_key_secret=access_key_secret, security_token=sts_token, endpoint=endpoint)
      cur_project_name = 'fs_demo'
      project = fs.get_project(cur_project_name)
      
      feature_view_name = 'item_table_preprocess_all_feature_v1'
      batch_feature_view = project.get_feature_view(feature_view_name)
      task = batch_feature_view.publish_table(partitions={'ds':cur_day}, mode='Overwrite', offline_to_online=True)
      task.wait()
      task.print_summary()
    4. No painel de navegação à direita, clique em Scheduling Configuration. Na caixa de diálogo exibida, configure os parâmetros de agendamento.

      Parâmetro

      Valor sugerido

      Scheduling Parameters

      Parameter Name

      dt

      Parameter Value

      $[yyyymmdd-1]

      Resource Properties

      Scheduling Resource Group

      Selecione o grupo de recursos exclusivo criado.

      Scheduling Dependencies

      Selecione a tabela de itens criada.

    5. Após configurar e testar o nó, salve e envie a configuração do nó.

    6. Realize uma operação de backfill de dados. Para mais informações, consulte Sincronizar tabelas de dados.

  6. Após a conclusão da sincronização, visualize os dados de recursos sincronizados mais recentes no Hologres.

4. Exportar o script do conjunto de treinamento

  1. Faça login no console do DataWorks.

  2. No painel de navegação à esquerda, clique em Data Development and O&M > Data Development.

  3. Selecione o workspace do DataWorks criado e clique em Enter Data Development.

  4. Passe o mouse sobre Create e escolha New Node > MaxCompute > PyODPS 3. Na caixa de diálogo exibida, configure os parâmetros do nó.

    Parâmetro

    Valor sugerido

    Engine Instance

    Selecione o mecanismo do MaxCompute criado.

    Node Type

    PyODPS 3

    Path

    Business Flow/Workflow/MaxCompute

    Name

    Insira um nome personalizado.

  5. Clique em Confirm.

  6. Copie o seguinte conteúdo para o script.

    from feature_store_py.fs_client import FeatureStoreClient
    from feature_store_py.fs_project import FeatureStoreProject
    from feature_store_py.fs_datasource import LabelInput, MaxComputeDataSource, TrainingSetOutput
    from feature_store_py.fs_features import FeatureSelector
    from feature_store_py.fs_config import LabelInputConfig, PartitionConfig, FeatureViewConfig
    from feature_store_py.fs_config import TrainSetOutputConfig, EASDeployConfig
    import datetime
    import sys
    from odps.accounts import StsAccount
    
    cur_day = args['dt']
    print('cur_day = ', cur_day)
    offset = datetime.timedelta(days=-1)
    pre_day = (datetime.datetime.strptime(cur_day, "%Y%m%d") + offset).strftime('%Y%m%d')
    print('pre_day = ', pre_day)
    
    access_key_id = o.account.access_id
    access_key_secret = o.account.secret_access_key
    sts_token = None
    endpoint = 'paifeaturestore-vpc.cn-beijing.aliyuncs.com'
    if isinstance(o.account, StsAccount):
        sts_token = o.account.sts_token
    fs = FeatureStoreClient(access_key_id=access_key_id, access_key_secret=access_key_secret, security_token=sts_token, endpoint=endpoint)
    cur_project_name = 'fs_demo'
    project = fs.get_project(cur_project_name)
    
    label_partitions = PartitionConfig(name = 'ds', value = cur_day)
    label_input_config = LabelInputConfig(partition_config=label_partitions)
    
    user_partitions = PartitionConfig(name = 'ds', value = pre_day)
    feature_view_user_config = FeatureViewConfig(name = 'user_table_preprocess_all_feature_v1',
    partition_config=user_partitions)
    
    item_partitions = PartitionConfig(name = 'ds', value = pre_day)
    feature_view_item_config = FeatureViewConfig(name = 'item_table_preprocess_all_feature_v1',
    partition_config=item_partitions)
    feature_view_config_list = [feature_view_user_config, feature_view_item_config]
    train_set_partitions = PartitionConfig(name = 'ds', value = cur_day)
    train_set_output_config = TrainSetOutputConfig(partition_config=train_set_partitions)
    
    model_name = 'fs_rank_v1'
    cur_model = project.get_model(model_name)
    task = cur_model.export_train_set(label_input_config, feature_view_config_list, train_set_output_config)
    task.wait()
    print("task_summary = ", task.task_summary)
  7. No painel de navegação à direita, clique em Scheduling Configuration. Na caixa de diálogo exibida, configure os parâmetros de agendamento.

    Parâmetro

    Valor sugerido

    Scheduling Parameters

    Parameter Name

    dt

    Parameter Value

    $[yyyymmdd-1]

    Resource Properties

    Scheduling Resource Group

    Selecione o grupo de recursos exclusivo criado.

    Scheduling Dependencies

    Selecione as tabelas de usuários e itens criadas.

  8. Após configurar e testar o nó, salve e envie a configuração do nó.

  9. Realize uma operação de backfill de dados. Para mais informações, consulte Sincronizar tabelas de dados.

5. Instalar e usar o SDK

Python SDK

Para mais informações, consulte Usar o FeatureStore Python SDK para construir um sistema de recomendação.

Go SDK

O FeatureStore Go SDK é open source. Para mais informações, consulte aliyun-pai-featurestore-go-sdk.

  1. Instalação

    Execute o seguinte comando para instalar o FeatureStore Go SDK.

    go get github.com/aliyun/aliyun-pai-featurestore-go-sdk/v2
  2. Uso

    1. Execute o seguinte comando para inicializar o cliente.

      accessId := os.Getenv("AccessId") 
      accessKey := os.Getenv("AccessKey") 
      regionId := "cn-hangzhou" 
      projectName := "fs_test_ots" 
      
      client, err := NewFeatureStoreClient(regionId, accessId, accessKey, projectName)
      Nota

      O SDK conecta-se diretamente à fonte de dados online. Portanto, o cliente deve ser executado em um ambiente VPC. Por exemplo, o Hologres exige que as conexões se originem de uma VPC especificada.

    2. Recupere dados de recursos de uma visualização de recurso.

      // get project by name 
      project, err := client.GetProject("fs_test_ots") 
      if err != nil {     
      	// t.Fatal(err) 
      } 
      // get featureview by name 
      user_feature_view := project.GetFeatureView("user_fea") 
      if user_feature_view == nil {     
      	// t.Fatal("feature view not exist") 
      } 
      
      // get online features 
      features, err := user_feature_view.GetOnlineFeatures([]interface{}{"100043186", "100060369"}, []string{"*"}, nil)

      Aqui, []string{"*"} significa recuperar todos os recursos na visualização de recurso. Você também pode especificar os nomes dos recursos que deseja recuperar.

      A seguir, um exemplo dos dados retornados:

      [     
      {         
      "city":"Hefei",    "follow_cnt":1,         "gender":"male",         "user_id":"100043186"    
       },     {                     
       "city":"",         "follow_cnt":5,         "gender":"male",         "user_id":"100060369"     
      } 
      ]
    3. Recupere dados de recursos de um recurso de modelo.

      Um recurso de modelo pode ser associado a várias entidades de recurso. Forneça vários join IDs para recuperar os recursos correspondentes juntos.

      Este exemplo usa três join IDs: join_id, user_id e item_id. Ao buscar recursos, forneça um valor para cada join ID.

      // get project by name 
      project, err := client.GetProject("fs_test_ots") 
      if err != nil {     
      	// t.Fatal(err) 
      }
      
      // get ModelFeature by name 
      model_feature := project.GetModelFeature("rank") 
      if model_feature == nil {     
      	// t.Fatal("model feature not exist") 
      } 
      
      // get online features 
      features, err := model_feature.GetOnlineFeatures(map[string][]interface{}{"user_id": {"100000676", "100004208"}, "item_id":{"238038872", "264025480"}} )

      A seguir, um exemplo dos dados retornados:

      [     
      {         
      "age":26,         "author":100015828,         "category":"14",         "city":"Shenyang",         "duration":63,         "gender":"male",         "item_id":"238038872",         "user_id":"100000676"    
       },     {         
      "age":23,         "author":100015828,         "category":"15",         "city":"Xi'an",         "duration":22,         "gender":"male",         "item_id":"264025480",         "user_id":"100004208"    
       }
       ]
      

      Especifique uma entidade de recurso para recuperar todos os seus recursos correspondentes.

      A seguir, um exemplo dos dados retornados:

      [    
       {         
      "age":26,         "city":"Shenyang",         "gender":"male",         "user_id":"100000676"    
       },     {        
       "age":23,         "city":"Xi'an",         "gender":"male",         "user_id":"100004208"    
       } 
      ]

Java SDK

O FeatureStore Java SDK é open source. Para mais informações, consulte aliyun-pai-featurestore-java-sdk.

Esta seção usa uma fonte de dados do Hologres como exemplo.

  1. Execute o código a seguir para carregar variáveis de ambiente e inicializar o serviço.

    public static String accessId = "";
    public static String accessKey = "";
    // Configure the host based on the region
    public static String host = "";
    // Get the accessId and accessKey from the configured local environment variables
    static {
        accessId = System.getenv("ACCESS_KEY_ID");
        accessKey = System.getenv("ACCESS_KEY_SECRET");
    }
  2. Crie uma classe de configuração que defina o regionId, accessId, accessKey e o nome do projeto.

    Configuration cf = new Configuration("cn-hangzhou",Constants.accessId,Constants.accessKey,"ele28");
    cf.setDomain(Constants.host);// Note: The default environment is a VPC environment
  3. Inicialize o cliente.

    ApiClient apiClient = new ApiClient(cf);
    // FS client
    FeatureStoreClient featureStoreClient = new FeatureStoreClient(apiClient);
  4. Recupere o projeto. Este exemplo usa um projeto chamado ele28.

    Project project=featureStoreClient.getProject("ele28");
    if(project==null){
        throw new RuntimeException("Project not found");
    }
  5. Recupere a visualização de recurso do projeto. Este exemplo usa uma visualização de recurso chamada mc_test.

    FeatureView featureView=project.getFeatureView("mc_test");
    if (featureView == null) {
        throw  new RuntimeException("FeatureView not found");
    }
  6. Recupere dados de recursos online com base na visualização de recurso.

    Map<String,String> m1=new HashMap<>();
    m1.put("gender","gender1"); // Create an alias                                                                                                                                                                                                 user_id='100027781'(FS_INT64) age='28'(FS_INT64) city='null'(FS_STRING) item_cnt='0'(FS_INT64) follow_cnt='0'(FS_INT64) follower_cnt='2'(FS_INT64) register_time='1697641608'(FS_INT64) tags='0'(FS_STRING) gender1='female'(FS_STRING) ---------------

    Para recuperar recursos online, String[]{"*"} recupera todas as propriedades. Especifique certas propriedades para recuperar apenas um subconjunto das informações.

    FeatureResult featureResult1=featureView.getOnlineFeatures(new String[]{"100017768","100027781","100072534"},new String[]{"*"},m1);

    Imprima as informações do recurso.

    while(featureResult1.next()){
        System.out.println("---------------");
        // Feature name
        for(String m:featureResult1.getFeatureFields()){
            System.out.print(String.format("%s=%s(%s) ",m,featureResult1.getObject(m),featureResult1.getType(m)));
        }
        System.out.println("---------------");
    }   

    Os seguintes dados são retornados.

    ---------------
    user_id='100017768'(FS_INT64)  age='28'(FS_INT64)  city='Dongguan'(FS_STRING) item_cnt='1'(FS_INT64)  follow_cnt='1'(FS_INT64)  follower_cnt='0'(FS_INT64) register_time='1697202320'(FS_INT64)  tags='1,2'(FS_STRING)  gender1='female'(FS_STRING) 
    ---------------
  7. Recupere o modelo.

    Model model=project.getModelFeature("model_t1");
    if(model==null){
        throw new RuntimeException("Model not found");
    }
    1. Recupere dados do recurso de modelo.

      Este recurso de modelo usa dois join IDs: user_id e item_id. O número de valores fornecidos deve corresponder ao número de join IDs. Este exemplo fornece um valor para cada join ID.

      Map<String, List<String>> m2=new HashMap<>(); 
      m2.put("user_id",Arrays.asList("101683057"));
      m2.put("item_id",Arrays.asList("203665415"));
    2. Recupere todos os dados de recursos relacionados à entidade de recurso de usuário do recurso de modelo.

      FeatureResult featureResult2 = model.getOnlineFeaturesWithEntity(m2,"user");

      Os seguintes dados são retornados.

      ---------------
      user_id='101683057' age='28' city='Shenzhen' follower_cnt='234' follow_cnt='0' gender='male' item_cnt='0' register_time='1696407642' tags='2' item_id='203665415' author='132920407' category='14' click_count='0' duration='18.0' praise_count='10' pub_time='1698218997' title='#Idiom Story' 
      ---------------

Cpp SDK

O FeatureStore C++ SDK está atualmente integrado ao EasyRec Processor. Ele é otimizado especificamente para extração de recursos, gerenciamento de cache e operações de leitura, oferecendo uma solução de alto desempenho e baixa latência para cenários de recomendação em grande escala.

  • Uso de memória: Ao lidar com dados de recursos complexos e em grande escala, o consumo de memória é significativamente reduzido. A economia de memória é ainda maior sob altas cargas de recursos.

  • Tempo de busca de recursos: Em vez de buscar recursos em armazenamentos online (como FeatureDB e Hologres), o SDK os busca diretamente do MaxCompute para o cache do Elastic Algorithm Service (EAS). Isso reduz significativamente o tempo de carregamento de recursos. Além disso, o MaxCompute oferece melhor estabilidade e extensibilidade, o que reduz a carga nos armazenamentos online durante operações de scale-out.

  • Tempo de pontuação do modelo: O uso deste SDK melhora a métrica de desempenho TP100 para pontuação de modelos, estabiliza os tempos de resposta e reduz significativamente as solicitações de timeout. Essas melhorias aumentam a confiabilidade geral e a experiência do usuário no serviço de recomendação.

Referências