Todos os produtos
Search
Central de documentação

Platform For AI:Gerencie recursos com o FeatureStore SDK

Última atualização: Sep 22, 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 products da Alibaba Cloud.

Informações básicas

Um sistema de recomendação sugere conteúdo ou products personalizados aos usuários com base em seus interesses e preferências. Uma etapa crucial em um sistema de recomendação é 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 SDK do FeatureStore.

Para obter mais informações sobre o FeatureStore, consulte FeatureStore overview.

Se tiver alguma dúvida durante a configuração ou o uso, entre em nosso grupo do DingTalk (ID: 34415007523) para obter suporte técnico.

Pré-requisitos

Antes de começar, conclua os seguintes preparativos.

Product dependente

Operação específica

Platform for AI (PAI)

MaxCompute

FeatureDB

DataWorks

  • O service do DataWorks está ativado.

  • Um workspace do DataWorks está criado. Para obter mais informações, consulte Create a workspace.

  • Há um grupo de recursos exclusivo para agendamento comprado e anexado ao workspace do DataWorks criado. Para obter mais informações, consulte Use exclusive resource groups for scheduling.

  • Uma source de dados do MaxCompute está configurada para o workspace do PAI criado. Para obter mais informações, consulte Configure a data source.

  • Um mecanismo de computação do MaxCompute está anexado ao workspace do PAI criado. Para obter mais informações, consulte Attach a MaxCompute engine.

  • Um mecanismo de computação do Hologres está anexado ao workspace do PAI criado. Para obter mais informações, consulte Attach a Hologres compute engine.

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 amostra de usuários, itens e rótulos no projeto MaxCompute pai_online_project. As tabelas de usuários e itens contêm, cada uma, 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 o seu próprio projeto MaxCompute. Siga estas etapas:

  1. Acesse o 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 que você criou 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 o seu próprio projeto MaxCompute. Para Resource Group, selecione o grupo de recursos exclusivo que você criou.

    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 a seguir:

    • 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 a seguir:

    • 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 a seguir:

    • 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 source de dados

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

  1. Acesse o 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 source de dados do MaxCompute.

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

      Parâmetro

      Valor sugerido

      Type

      MaxCompute

      Name

      Insira um nome personalizado.

      MaxCompute Project Name

      Selecione o projeto MaxCompute que você criou.

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

      Nota

      A operação de autorização requer que sua conta tenha permissões de administrador. Para obter mais informações, consulte Manage user permissions using commands ou Manage user permissions in the console.

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

  4. Configure a source de dados do FeatureDB.

    1. Se você já criou uma source 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 para a source de dados do FeatureDB.

      Parâmetro

      Valor sugerido

      Type

      FeatureDB (Se esta for a primeira vez que você o utiliza, 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, você pode usar o FeatureStore SDK em uma VPC para acessar diretamente o FeatureDB por meio 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 o seu service 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 service 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 SDK do Python do FeatureStore mesmo que use o console para a configuração inicial.

Método 1: Usar o console

  1. Crie um projeto do FeatureStore.

    1. Acesse o 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 source de dados do MaxCompute que você criou.

      Online Store

      Selecione a source de dados do FeatureDB que você criou.

    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 para a 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 para a 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 feature view.

    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 para a feature view 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 source de dados do MaxCompute que você criou.

      Feature Table

      Selecione a tabela de usuários que você preparou: 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 feature view 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 source de dados do MaxCompute que você criou.

      Feature Table

      Selecione a tabela de itens que você preparou: 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 feature view.

  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 source de dados do MaxCompute que você criou.

      Table Name

      Selecione a tabela de rótulos que você preparou: 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 feature views de usuário e item que você criou.

      Label Table Name

      Selecione a tabela de rótulos que você criou: rec_sln_demo_label_table.

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

    3. Na página da 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 de recursos subsequente e treinamento de modelo.

  6. Instale o SDK do Python do FeatureStore. Para obter mais informações, consulte Use FeatureStore to manage features in a recommendation system.

Método 2: Usar o SDK do Python do FeatureStore

  1. Acesse o console do DataWorks.

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

  3. Na aba Exclusive Resource Groups, encontre o grupo de recursos cujo Purpose é Data Scheduling. Clique no ícone image.png ao lado de seu 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

    Timeout

    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 como usar o SDK, consulte DSW Gallery.

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

Antes de publicar seu service, execute o nó de sincronização de dados regularmente para sincronizar dados do armazenamento offline para o armazenamento online. O service online então lê 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. Acesse o 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 que você criou 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 que você criou.

      Scheduling Dependencies

      Selecione a tabela de usuários que você criou.

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

    5. Execute uma operação de backfill de dados. Para obter mais informações, consulte Synchronize data tables.

  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 de rotina 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 que você criou.

      Scheduling Dependencies

      Selecione a tabela de itens que você criou.

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

    6. Execute uma operação de backfill de dados. Para obter mais informações, consulte Synchronize data tables.

  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. Acesse o 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 que você criou 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 que você criou.

    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 que você criou.

    Scheduling Dependencies

    Selecione as tabelas de usuários e itens que você criou.

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

  9. Execute uma operação de backfill de dados. Para obter mais informações, consulte Synchronize data tables.

5. Instalar e usar o SDK

Python SDK

Para obter mais informações, consulte Use the FeatureStore Python SDK to build a recommendation system.

Go SDK

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

  1. Instalação

    Execute o seguinte comando para instalar o SDK do Go do FeatureStore.

    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 se conecta diretamente à source de dados online. Portanto, o cliente deve ser executado em um ambiente VPC. Por exemplo, o Hologres requer que as conexões se originem de uma VPC especificada.

    2. Recupere dados de recursos de uma feature view.

      // 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 feature view. 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.

      É possível associar um recurso de modelo a várias entidades de recursos. Você pode fornecer 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, você deve fornecer 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"    
       }
       ]
      

      Você também pode especificar 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 obter mais informações, consulte aliyun-pai-featurestore-java-sdk.

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

  1. Execute o seguinte código para carregar variáveis de ambiente e inicializar o service.

    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 configure 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 feature view do projeto. Este exemplo usa uma feature view 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 feature view.

    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. Você também pode especificar certas propriedades para recuperar apenas um subconjunto das informações.

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

    Exiba 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 que você fornece 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 a partir 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 é especificamente otimizado para extração de recursos, gerenciamento de cache e operações de leitura para fornecer uma solução de alta performance 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 é mais significativa sob altas cargas de recursos.

  • Tempo de extração de recursos: Em vez de extrair recursos de armazenamentos online (como FeatureDB e Hologres), o SDK os extrai 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 fornece melhor estabilidade e extensibilidade, o que reduz a carga nos armazenamentos online durante operações de scale-out.

  • Tempo de pontuação do modelo: Usar este SDK melhora a métrica de performance TP100 para pontuação de modelo, estabiliza os tempos de resposta e reduz significativamente as requisições de timeout. Essas melhorias aumentam a confiabilidade geral e a experiência do usuário do service de recomendação.

Referências