project-lib para Python (obsoleto)

Se você precisar interagir com os projetos do watsonx.ai Studio e com os ativos do projeto a partir de um notebook, poderá usar a biblioteca ' project-lib para Python. A biblioteca é como uma interface programática para um projeto.

Ao usar a biblioteca project-lib para Python, é possível acessar metadados e ativos do projeto, incluindo arquivos e conexões. A biblioteca também contém funções que simplificam a busca de arquivos associados ao projeto.

A biblioteca project-lib para Python está obsoleta e foi substituída pela biblioteca ibm-watson-studio-lib para Python. Embora ainda possa usar a biblioteca project-lib , você deve começar a usar a biblioteca ibm-watson-studio-lib em seus notebooks. Consulte ibm-watson-studio-lib para Python.

Nota:

A biblioteca project-lib é removida do tempo de execução 25.1. Em tempos de execução mais antigos, o site project-lib permanece disponível.

Nota:


-As funções project-lib não codificam ou decodificam dados ao salvar dados ou obter dados de um arquivo.
-As funções project-lib não podem ser usadas para acessar ativos de pasta conectados (arquivos em um caminho no Cloud Object Storage).

Usar a biblioteca

A biblioteca project-lib para Python é pré-instalada e pode ser importada diretamente em um bloco de notas no editor de bloco de notas Para usar a biblioteca do project-lib em seu bloco de notas, são necessários o ID e o token do projeto.

Para inserir o token do projeto em seu bloco de notas:

  1. Clique no ícone Mais da sua barra de ferramentas do bloco de notas e, em seguida, clique em Inserir token do projeto.

    Se existir um token do projeto, uma célula será incluída em seu bloco de notas com as informações a seguir:

    from project_lib import Project
    project = Project(sc,"<ProjectId>","<ProjectToken>")
    

    sc é o contexto do Spark se o Spark for usado. <ProjectId> é o ID de seu projeto e <ProjectToken> é o valor do token do projeto.

    Se você receber uma mensagem informando que nenhum token do projeto existe, clique no link na mensagem para que seja redirecionado para a página Controle de acesso do projeto na qual é possível criar um token do projeto. Deve-se ser elegível para criar um token do projeto. Para obter detalhes, consulte Incluindo manualmente o token do projeto.

    Para criar um token do projeto:

    1. Na guia Gerenciar, selecione a página Controle de acesso e clique em Novo token de acesso em Tokens de acesso.
    2. Insira um nome, selecione a função Editor para o projeto e crie um token.
    3. Volte para o seu bloco de notas, clique no ícone Mais na barra de ferramentas do bloco de notas e, em seguida, clique em Inserir token do projeto.

As funções do project-lib

O objeto do projeto instanciado que é criado após você ter importado a biblioteca do project-lib expõe um conjunto de funções que são agrupadas da seguinte maneira:

Buscar informações sobre o projeto

É possível usar as funções a seguir para buscar informações relacionadas ao projeto programaticamente:

  • get_name()

    Essa função retorna o nome do projeto.

  • get_description()

    Essa função retorna a descrição do projeto.

  • get_metadata()

    Essa função retorna os metadados do projeto;

  • get_storage_metadata()

    Essa função retorna os metadados do armazenamento de objetos associado ao projeto.

  • get_project_bucket_name()

    Esta função retorna o nome do depósito do projeto no armazenamento de objeto associado. Todos os arquivos de projeto estão armazenados nesse depósito.

  • get_files()

    Esta função retorna a lista dos arquivos em seu projeto. Cada elemento na lista retornada contém o ID e o nome do arquivo. A lista de arquivos retornados não é classificada por nenhum critério e poderá mudar quando você chamar a função novamente.

  • get_assets()

    Essa função retorna uma lista de todos os ativos de projeto. É possível transmitir o parâmetro opcional asset_type para a função get_assets que permite filtrar ativos por tipo. Os valores aceitos para este parâmetro são data_asset, connection e asset. O valor asset retorna todos os ativos em seu projeto. Por exemplo, para obter apenas os ativos de dados, use a função get_assets("data_asset").

  • get_connections()

    Essa função retorna uma lista das conexões que você tem em seu projeto. Cada elemento na lista retornada contém o ID e o nome da conexão.

Buscar arquivos

É possível usar as funções a seguir para buscar arquivos armazenados no armazenamento de objetos associado ao seu projeto.

É possível buscar arquivos de duas maneiras:

  • get_file_url(file_name) em que file_name é o nome do arquivo que você deseja buscar.

    Esta função retorna a URL para buscar um arquivo do armazenamento de objeto usando o Spark. A URL é construída com base no tipo de armazenamento de objeto associado ao projeto. As configurações do Hadoop são definidas automaticamente quando você interage com o armazenamento de objetos do seu projeto.

    O exemplo a seguir mostra como usar essa função para buscar dados do armazenamento de objetos usando o Spark:

    # Import the lib
    from project_lib import Project
    project = Project(sc,"<ProjectId>", "<ProjectToken>")
    
    # Get the url
    url = project.get_file_url("myFile.csv")
    
    # Fetch the CSV file from the object storage using Spark
    from pyspark.sql import SparkSession
    spark = SparkSession.builder.getOrCreate()
    df_data_1 = spark.read\
      .format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')\
      .option('header', 'true')\
      .load(url)
    df_data_1.show(5)
    
  • get_file(file_name) em que file_name é o nome do arquivo que você deseja buscar.

    Esta função busca um arquivo do armazenamento de objeto na memória do kernel em execução. A função retorna um buffer de byte que pode ser usado para ligar-se a estruturas de dados específicas do kernel, por exemplo, um DataFrame do pandas. Esse método de busca de arquivos não é recomendado para arquivos muitos grandes.

    O exemplo a seguir mostra como buscar um arquivo e ler os dados em um DataFrame do pandas:

    # Import the lib
    from project_lib import Project
    project = Project(sc,"<ProjectId>", "<ProjectToken>")
    
    # Fetch the file
    my_file = project.get_file("myFile.csv")
    
    # Read the CSV data file from the object storage into a pandas DataFrame
    my_file.seek(0)
    import pandas as pd
    pd.read_csv(my_file, nrows=10)
    

Salvar dados

É possível usar a função a seguir para salvar dados no armazenamento de objeto associado ao seu projeto. Os dados serão incluídos como um arquivo no depósito do projeto no Cloud Object Storage associado. Essa função faz diversas coisas. Em primeiro lugar, ele coloca os dados no armazenamento de objetos e, em seguida, os inclui como um ativo de dados em seu projeto para que seja possível ver os dados que você salvou como um arquivo na lista de ativos de dados em seu projeto.

save_data(file_name, data, set_project_asset=True, overwrite=False)

A função assume os parâmetros a seguir:

  • file_name: o nome do arquivo criado.
  • data: os dados para upload. Este pode ser qualquer objeto do tipo file-like-object, por exemplo, buffers de bytes ou buffers de sequência de caracteres.
  • set_project_asset[optional]: inclui o arquivo no projeto como um ativo de dados depois que os dados são transferidos por upload com sucesso para o Object Storage. Assume um valor booleano e o valor true é configurado por padrão.
  • overwrite[optional]: sobrescreve o arquivo caso o arquivo já exista no Object Storage ou no projeto. Por padrão, ele é definido como falso.

Aqui está um exemplo, que mostra como é possível salvar dados em um arquivo no armazenamento de objetos:

# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")

# let's assume you have the pandas DataFrame  pandas_df which contains the data
# you want to save in your object storage as a csv file
project.save_data("file_name.csv", pandas_df.to_csv(index=False))

# the function returns a dict which contains the asset_id, bucket_name and file_name
# upon successful saving of the data

Ler dados de uma conexão

É possível usar a função a seguir para obter os metadados (credenciais) de uma determinada conexão.

get_connection: a função utiliza como entrada o ID ou o nome da conexão. É possível obter esses valores usando a função get_assets() que retorna o id, name e type de todos os ativos listados no projeto.

A função get_connection retorna as credenciais de conexão que você pode usar para buscar dados a partir da origem de dados de conexão.

A seguir há um exemplo que mostra como é possível buscar as credenciais de uma conexão usando a função get_connection:

# Import the lib
from project_lib import Project
    project = Project(sc,"<ProjectId>", "<ProjectToken>")

conn_creds = project.get_connection(name="<ConnectionName>")

Buscar dados conectados

É possível usar a função a seguir para buscar as credenciais de dados conectados. A função retorna um dicionário que contém as credenciais de conexão, além de um atributo do datapath que aponta para dados específicos nessa conexão, como, por exemplo, uma tabela em uma instância dashDB ou um banco de dados em uma instância Cloudant.

get_connected_data: essa função utiliza como entrada o ID ou o nome dos dados conectados. É possível obter esses valores usando a função get_assets() que retorna o id, name e type de todos os ativos listados no projeto.

A seguir há um exemplo que mostra como buscar as credenciais dos dados conectados em uma instância dashDB usando a função get_connected_data:

# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")

creds = project.get_connected_data(name="<ConnectedDataName>")
# creds is a dictionary that has the connection credentials in addition to
# a datapath that references a specific table in the database
# creds: {'database': 'DB_NAME',
# 'datapath': '/DASH11846/SAMPLE_TABLE',
# 'host': 'dashdb-entry-yp-dal09-07.services.dal.bluemix.net',
# 'password': 'XXXX',
# 'sg_service_url': 'https://sgmanager.ng.bluemix.net',
# 'username': 'XXXX'}

Saiba Mais

Veja uma demo dessas funções em uma postagem do blog.