Bir defterden Watson Studio projelerinizle ve proje varlıklarınızla etkileşimde bulunmanız gerekiyorsa, Pythoniçin project-lib
kitaplığını kullanabilirsiniz. Kitaplık, bir projeye programlı bir arabirim gibidir.
Pythoniçin project-lib
kitaplığını kullanarak, dosyalar ve bağlantılar da dahil olmak üzere proje meta verilerine ve varlıklarına erişebilirsiniz. Kitaplık ayrıca, projeyle ilişkili dosyaları basitleştiren işlevler de içerir.
Not:
project-lib
işlevleri, bir dosyadan veri saklarken ya da bir dosyadan veri alınırken verileri kodlamaz ya da kodu çözmez.project-lib
işlevleri, bağlantılı klasör varlıklarına erişmek için kullanılamaz ( Cloud Object Storageiçindeki bir yoldaki dosyalar).
Kitaplığı kullan
Python için project-lib
kitaplığı önceden kuruludur ve doğrudan not defteri düzenleyicide bir not defterine aktarılabilir. Not defterinizde project-lib
kitaplığını kullanmak için, projenin tanıtıcısı ve proje simgesi gerekir.
Proje simgesini not defterinize eklemek için:
Not defteri araç çubuğunuzdaki Diğer simgesini ve daha sonra, Proje simgesi ekledüğmesini tıklatın.
Bir proje simgesi varsa, not defterinize aşağıdaki bilgileri içeren bir hücre eklenir:
from project_lib import Project project = Project(sc,"<ProjectId>","<ProjectToken>")
sc
, Spark kullanılıyorsa, Spark bağlamlıdır.<ProjectId>
projenizin tanıtıcısıdır ve<ProjectToken>
proje simgizin değeridir.Bir ileti belirtecinin var olmadığı bir iletide anlatıldıysa, projenin Erişim Denetimi sayfasına yeniden yönlendirilecek iletteki bağlantıyı tıklatarak proje simgesi yaratabilirsiniz. Bir proje belirteci yaratma hakkına sahip olmanız gerekir. Ayrıntılar için bkz. Proje belirtecinin el ile eklenmesi.
Proje simgesi yaratmak için:
- Manage (Yönet) etiketinden Access Control (Erişim Denetimi) sayfasını seçin ve Access simgelers(Erişim simgeleri) altındaki New access token (Yeni erişim simgesi)
- Bir ad girin, proje için Düzenleyici rolünü seçin ve bir simge oluşturun.
- Defterinize geri dönün, not defteri araç çubuğundaki Diğer simgesini ve daha sonra, Proje simgesi ekledüğmesini tıklatın.
project-lib
işlevleri
project-lib
kitaplığını içe aktardıktan sonra yaratılan somutlaştırılan proje nesnesi, aşağıdaki şekilde gruplanmış bir işlev kümesi gösterir:
- Proje bilgilerini getir
- Dosyaları getir
- Verileri kaydetme
- Bağlantıdaki verileri okuyun
- Bağlı verileri getir
Proje bilgilerini getir
Proje ile ilgili bilgileri programsal olarak getirmek için aşağıdaki işlevleri kullanabilirsiniz:
get_name()
Bu işlev, projenin adını döndürür.
get_description()
Bu işlev, projenin tanımını döndürür.
get_metadata()
Bu işlev, proje meta verilerini döndürür.
get_storage_metadata()
Bu işlev, projeyle ilişkilendirilen nesne depolamanın meta verilerini döndürür.
get_project_bucket_name()
Bu işlev, ilişkili nesne depolamasındaki proje saklama kabı adını döndürür. Tüm proje dosyaları bu saklama kabında saklanır.
get_files()
Bu işlev, projenizdeki dosyaların listesini döndürür. Döndürülen listede yer alan her öğe, dosyanın tanıtıcısını ve adını içerir. Döndürülen dosyaların listesi herhangi bir ölçüte göre sıralanmaz ve işlevi yeniden çağırdığınızda değişebilir.
get_assets()
Bu işlev, tüm proje varlıklarının listesini döndürür. İsteğe bağlı
asset_type
parametresiniget_assets
işlevine geçirebilirsiniz. Bu parametre, varlıkları tipe göre süzgeçten geçirmenizi sağlar. Bu parametre için kabul edilen değerlerdata_asset
,connection
veasset
' dir.asset
değeri projenizdeki tüm varlıkları döndürür. Örneğin, yalnızca veri varlıklarını almak içinget_assets("data_asset")
işlevini kullanın.get_connections()
Bu işlev, projenizdeki bağlantıların bir listesini döndürür. Döndürülen listedeki her öğe, tanıtımın tanıtıcısını ve adını içerir.
Dosyaları getir
Projeniz ile ilişkili nesne deposunda saklanan dosyaları getirmek için aşağıdaki işlevleri kullanabilirsiniz.
Dosyaları iki şekilde getirebilirsiniz:
get_file_url(file_name)
, buradafile_name
almak istediğiniz dosyanın adıdır.Bu işlev, Spark 'ı kullanarak nesne depolamasından bir dosya almak için URL ' yi döndürür. URL adresi, projeyle ilişkili nesne deposu tipine dayalı olarak oluşturulur. Hadoop configurations are set up automatically when you interact with the object storage of your project.
Aşağıdaki örnek, Spark kullanarak nesne depolamasından veri almak için bu işlevin nasıl kullanılacağını gösterir:
# 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)
, buradafile_name
almak istediğiniz dosyanın adıdır.Bu işlev, nesne depolamadaki bir dosyayı çalışan çekirdeğin belleğindeki belleğe alır. İşlev, çekirdeğe özgü veri yapılarına (örneğin, pandalar DataFrame) bağlamak için kullanılabilen bir bayt arabelleği döndürür. Çok büyük dosyalar için bu dosya getirme yöntemi önerilmez.
Aşağıdaki örnek, bir dosyanın nasıl getirileceğini ve pandalar DataFrameiçinde nasıl okunacağını gösterir:
# 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)
Verileri kaydetme
Projenizle ilişkili nesne deposuna veri saklamak için aşağıdaki işlevi kullanabilirsiniz. Veriler, ilişkili Cloud Object Storageiçindeki proje sepetine bir dosya olarak eklenecektir. Bu işlev birden çok şey yapar. İlk olarak, verileri nesne deposuna koyar ve bu verileri projenizin bir veri varlığı olarak ekler; böylece, projenizdeki veri varlıkları listesinde bir dosya olarak kaydetmiş olduğunuz verileri görebilirsiniz.
save_data(file_name, data, set_project_asset=True, overwrite=False)
İşlev aşağıdaki değiştirgeleri alır:
file_name
: yaratılan dosyanın adı.data
: Yüklemek için veri. Bu,file-like-object
tipinde herhangi bir nesne (örneğin, byte arabellekleri ya da dizgi arabellekleri) olabilir.set_project_asset[optional]
: verileri, veriler nesne deposuna başarıyla yüklendikten sonra bir veri varlığı olarak projeye ekler. Bir boole değeri alır ve true değeri varsayılan olarak ayarlanır.overwrite[optional]
: dosya, nesne deposunda ya da projede zaten varsa, dosyanın üzerine yazılır. Varsayılan olarak false olarak ayarlıdır.
Aşağıda, verileri nesne depolamasındaki bir dosyaya nasıl saklayabileceğiniz gösteren bir örnek vardır:
# 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
Bağlantıdaki verileri okuma
Belirli bir bağlantının meta verilerini (kimlik bilgileri) almak için aşağıdaki işlevi kullanabilirsiniz.
get_connection
: İşlev, bağlantının tanıtıcısını ya da bağlantının adını ya da bağlantının adını alır. Bu değerleri, projede listelenen tüm varlıkların id
, name
ve type
değerlerini döndüren get_assets()
işlevini kullanarak elde edebilirsiniz.
get_connection
işlevi, bağlantı veri kaynağından veri almak için kullanabileceğiniz bağlantı kimlik bilgilerini döndürür.
Aşağıda, get_connection
işlevini kullanarak bir bağlantının kimlik bilgilerini nasıl getirebileceğiniz gösteren bir örnek vardır:
# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")
conn_creds = project.get_connection(name="<ConnectionName>")
Bağlantın dashDB ile bağlantılı bir bağlantıysa, aşağıdaki kodu çalıştırarak verilerinizi getirebilirsiniz:
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()
Bağlı verileri getir
Bağlı verilerin kimlik bilgilerini almak için aşağıdaki işlevi kullanabilirsiniz. Bu işlev, ilgili bağlantıdaki belirli verileri (örneğin, bir dashDB örneğindeki bir tablo ya da Cloudant ) bir veritabanında işaret eden bir datapath
özniteliğine ek olarak bağlantı kimlik bilgilerini içeren bir sözlük döndürür.
get_connected_data
: bu işlev, bağlı verilerin tanıtıcısını ya da bağlı verilerin adını girdikçe alır. Bu değerleri, projede listelenen tüm varlıkların id
, name
ve type
değerlerini döndüren get_assets()
işlevini kullanarak elde edebilirsiniz.
Here is an example, which shows you how to fetch the credentials of connected data in a dashDB instance by using the get_connected_data
function:
# 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'}
Daha fazla bilgi
Bu işlevlerin bir web günlüğü gönderisinde bir tanıtıma bakın.
Üst konu: Not defterine veri yüklenmesi ve not defterine erişilmesi