0 / 0
Go back to the English version of the documentation
project-lib dla Python
Last updated: 18 sie 2023
project-lib dla Python

Jeśli konieczne jest interakcję z projektami Watson Studio i zasobami projektowym z notatnika, można użyć biblioteki project-lib dla Python. Biblioteka jest jak programowy interfejs do projektu.

Za pomocą biblioteki project-lib dla języka Pythonmożna uzyskać dostęp do metadanych projektu i zasobów aplikacyjnych, w tym do plików i połączeń. Biblioteka zawiera również funkcje, które upraszczają pobieranie plików powiązanych z projektem.

Uwaga:


-funkcje project-lib nie kodują ani nie dekodują danych podczas zapisywania danych w pliku lub pobierania danych z pliku.
-funkcje project-lib nie mogą być używane do uzyskiwania dostępu do połączonych zasobów folderu (pliki w ścieżce w Cloud Object Storage).

Użyj biblioteki

Biblioteka project-lib dla Python jest wstępnie zainstalowana i może być importowana bezpośrednio w notatniku w edytorze notatnika. Aby użyć biblioteki project-lib w notatniku, potrzebny jest identyfikator projektu i znacznik projektu.

Aby wstawić znacznik projektu do notatnika:

  1. Kliknij ikonę Więcej na pasku narzędzi notatnika, a następnie kliknij opcję Wstaw znacznik projektu.

    Jeśli znacznik projektu istnieje, do notatnika zostanie dodana komórka z następującymi informacjami:

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

    sc jest kontekstem Spark, jeśli używany jest park Spark. <ProjectId> to identyfikator projektu, a <ProjectToken> to wartość znacznika projektu.

    Jeśli w komunikacie powiedziano, że nie istnieje znacznik projektu, należy kliknąć odsyłacz w komunikacie, który ma zostać przekierowany do strony Kontrola dostępu projektu, w której można utworzyć znacznik projektu. Aby utworzyć znacznik projektu, należy kwalifikować się do niego. Szczegółowe informacje na ten temat zawiera sekcja Ręczne dodawanie znacznika projektu.

    Aby utworzyć znacznik projektu:

    1. Na karcie Zarządzanie wybierz stronę Kontrola dostępu , a następnie kliknij opcję Nowy znacznik dostępu w obszarze Znaczniki dostępu.
    2. Wprowadź nazwę, wybierz rolę Edytujący dla projektu, a następnie utwórz znacznik.
    3. Wróć do notatnika, kliknij ikonę Więcej na pasku narzędzi notatnika, a następnie kliknij opcję Wstaw znacznik projektu.

Funkcje produktu project-lib

Obiekt projektu, który został utworzony po zaimportowaniu biblioteki produktu project-lib , prezentuje zestaw funkcji pogrupowanych w następujący sposób:

Pobierz informacje o projekcie

Następujące funkcje umożliwiają programowe pobieranie informacji związanych z projektem:

  • get_name()

    Ta funkcja zwraca nazwę projektu.

  • get_description()

    Ta funkcja zwraca opis projektu.

  • get_metadata()

    Ta funkcja zwraca metadane projektu.

  • get_storage_metadata()

    Ta funkcja zwraca metadane obiektowej pamięci masowej powiązanej z projektem.

  • get_project_bucket_name()

    Ta funkcja zwraca nazwę porcji projektu w powiązanej składowaniu obiektów. Wszystkie pliki projektu są przechowywane w tym zasobniku.

  • get_files()

    Ta funkcja zwraca listę plików w projekcie. Każdy element na zwróconej liście zawiera identyfikator i nazwę pliku. Lista zwróconych plików nie jest sortowana według żadnego kryterium i może ulec zmianie po ponownym wywołaniu funkcji.

  • get_assets()

    Ta funkcja zwraca listę wszystkich zasobów aplikacyjnych projektu. Opcjonalny parametr asset_type można przekazać do funkcji get_assets , która umożliwia filtrowanie zasobów według typu. Dopuszczalne wartości dla tego parametru to: data_asset, connection i asset. Wartość asset zwraca wszystkie zasoby aplikacyjne w projekcie. Na przykład, aby pobrać tylko zasoby danych, należy użyć funkcji get_assets("data_asset").

  • get_connections()

    Ta funkcja zwraca listę połączeń, które są dostępne w projekcie. Każdy element na zwróconej liście zawiera identyfikator i nazwę połączenia.

Pobierz pliki

Do pobrania plików zapisanych w pamięci masowej obiektu powiązanej z projektem można użyć następujących funkcji.

Pliki można pobierać na dwa sposoby:

  • get_file_url(file_name) , gdzie file_name jest nazwą pliku, który ma zostać pobrany.

    Ta funkcja zwraca adres URL w celu pobrania pliku z pamięci masowej obiektu przy użyciu Spark. Adres URL jest tworzony w oparciu o typ obiektowej pamięci masowej powiązanej z projektem. Konfiguracje Hadoop są ustawiane automatycznie podczas interakcji z obiektową pamięcią masową projektu.

    W poniższym przykładzie przedstawiono sposób użycia tej funkcji w celu pobrania danych z pamięci masowej obiektów za pomocą 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) , gdzie file_name jest nazwą pliku, który ma zostać pobrany.

    Ta funkcja pobiera plik z pamięci obiektu do pamięci jądra działającego. Funkcja zwraca bufor bajtowy, który może być użyty do powiązania ze strukturami danych specyficznymi dla jądra, na przykład, pandas DataFrame. Ta metoda pobierania plików nie jest zalecana w przypadku bardzo dużych plików.

    W poniższym przykładzie pokazano, jak pobrać plik i odczytać dane w obszarze DataFrame:

    # 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)
    

Zapisz dane

Do zapisania danych w obiektowej pamięci masowej powiązanej z projektem można użyć następującej funkcji. Dane zostaną dodane jako plik do zasobnika projektu w powiązanej Cloud Object Storage. Ta funkcja wykonuje wiele czynności. Po pierwsze, umieszcza dane w obiektowej pamięci masowej, a następnie dodaje te dane jako zasób danych do projektu, dzięki czemu można zobaczyć dane zapisane jako plik na liście zasobów danych w projekcie.

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

Funkcja przyjmuje następujące parametry:

  • file_name: nazwa utworzonego pliku.
  • data: dane do przesłania. Może to być dowolny obiekt typu file-like-object, na przykład bufory bajtów lub bufory łańcuchowe.
  • set_project_asset[optional]: dodaje plik do projektu jako zasób danych po pomyślnym przesłaniu danych do pamięci masowej obiektów. Przyjmuje ona wartość boolowką, a wartość true jest ustawiana domyślnie.
  • overwrite[optional]: nadpisuje plik, jeśli plik już istnieje w obiektowej pamięci masowej lub w projekcie. Domyślnie ustawiona jest wartość false.

Oto przykład, który pokazuje, jak można zapisywać dane do pliku w obiektowej pamięci masowej:

# 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

Odczytywanie danych z połączenia

Aby pobrać metadane (informacje autoryzacyjne) danego połączenia, można użyć następującej funkcji.

get_connection: funkcja przyjmuje jako dane wejściowe identyfikator połączenia lub nazwę połączenia. Wartości te można uzyskać, korzystając z funkcji get_assets() , która zwraca id, name i type wszystkich zasobów aplikacyjnych wymienionych w projekcie.

Funkcja get_connection zwraca informacje autoryzacyjne połączenia, których można użyć do pobrania danych ze źródła danych połączenia.

Oto przykład, który pokazuje, jak można pobrać informacje autoryzacyjne połączenia za pomocą funkcji get_connection :

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

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

Jeśli połączenie jest połączeniem z bazą danych dashDB , na przykład można pobrać dane, uruchamiając następujący kod:

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

host_url = "jdbc:db2://{}:{}/{}".format(conn_creds["host"], "50000", conn_creds["database"])
data_df = spark.read.jdbc(host_url, table="<TableName>", properties={"user": conn_creds["username"], "password": conn_creds["password"]})
data_df.show()

Pobierz połączone dane

Aby pobrać informacje autoryzacyjne połączonych danych, można użyć następującej funkcji. Funkcja zwraca słownik, który zawiera referencje połączenia oprócz atrybutu datapath , który wskazuje konkretne dane w tym połączeniu, na przykład tabelę w instancji dashDB lub bazę danych w instancji Cloudant .

get_connected_data: ta funkcja przyjmuje jako dane wejściowe identyfikator połączonych danych lub nazwę połączonych danych. Wartości te można uzyskać, korzystając z funkcji get_assets() , która zwraca id, name i type wszystkich zasobów aplikacyjnych wymienionych w projekcie.

Oto przykład, który przedstawia sposób pobierania referencji połączonych danych w instancji dashDB za pomocą funkcji 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'}

Więcej inform.

Zapoznaj się z demonem tych funkcji w wypowiedzi w blogu.

Temat nadrzędny: Ładowanie i uzyskiwanie dostępu do danych w notatniku

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more