Git klasörlerinden veya çalışma alanı dosyalarından Python modüllerini içeri aktarma
Python kodunu Databricks Git klasörlerinde veya çalışma alanı dosyalarında depolayabilir ve ardından bu Python kodunu Delta Live Tables işlem hatlarınıza aktarabilirsiniz. Git klasörleri veya çalışma alanı dosyalarındaki modüllerle çalışma hakkında daha fazla bilgi için bkz . Python ve R modülleriyle çalışma.
Not
Databricks Git klasöründe veya çalışma alanı dosyasında depolanan bir not defterinden kaynak kodu içeri aktaramazsınız. Bunun yerine, işlem hattı oluştururken veya düzenlerken not defterini doğrudan ekleyin. Bkz. İşlem hattı oluşturma.
Python modülünü Delta Live Tables işlem hattına aktarma
Aşağıdaki örnekte veri kümesi sorgularının çalışma alanı dosyalarından Python modülleri olarak içeri aktarılması gösterilmektedir. Bu örnekte işlem hattı kaynak kodunu depolamak için çalışma alanı dosyalarının kullanılması açıklanmış olsa da, bunu git klasöründe depolanan kaynak koduyla kullanabilirsiniz.
Bu örneği çalıştırmak için aşağıdaki adımları kullanın:
Çalışma alanı tarayıcısını açmak için Azure Databricks çalışma alanınızın kenar çubuğunda Çalışma Alanı'na tıklayın.
Python modülleri için bir dizin seçmek için çalışma alanı tarayıcısını kullanın.
Seçili dizinin en sağdaki sütununa tıklayın ve Dosya Oluştur'a > tıklayın.
Dosya için bir ad girin; örneğin,
clickstream_raw_module.py
. Dosya düzenleyicisi açılır. Kaynak verileri tabloya okumak üzere bir modül oluşturmak için düzenleyici penceresine aşağıdakileri girin:from dlt import * json_path = "/databricks-datasets/wikipedia-datasets/data-001/clickstream/raw-uncompressed-json/2015_2_clickstream.json" def create_clickstream_raw_table(spark): @table def clickstream_raw(): return ( spark.read.json(json_path) )
Hazırlanan verileri içeren yeni bir tablo oluşturan bir modül oluşturmak için, aynı dizinde yeni bir dosya oluşturun, dosya için bir ad (örneğin,
clickstream_prepared_module.py
) girin ve yeni düzenleyici penceresine aşağıdakileri girin:from clickstream_raw_module import * from dlt import read from pyspark.sql.functions import * from pyspark.sql.types import * def create_clickstream_prepared_table(spark): create_clickstream_raw_table(spark) @table @expect("valid_current_page_title", "current_page_title IS NOT NULL") @expect_or_fail("valid_count", "click_count > 0") def clickstream_prepared(): return ( read("clickstream_raw") .withColumn("click_count", expr("CAST(n AS INT)")) .withColumnRenamed("curr_title", "current_page_title") .withColumnRenamed("prev_title", "previous_page_title") .select("current_page_title", "click_count", "previous_page_title") )
Ardından bir işlem hattı not defteri oluşturun. Azure Databricks giriş sayfanıza gidin ve Not defteri oluştur'u seçin veya kenar çubuğunda Yeni'ye tıklayıp Not Defteri'ni seçin. Not defterini çalışma alanı tarayıcısında Not Defteri Oluştur'a tıklayarak da oluşturabilirsiniz>.
Not defterinizi adlandırın ve Python'ın varsayılan dil olduğunu onaylayın.
Oluştur’a tıklayın.
Not defterine örnek kodu girin.
Not
Not defteriniz çalışma alanı dosyaları yolundan veya not defteri dizininden farklı bir Git klasörleri yolundan modülleri veya paketleri içeri aktarıyorsa, yolunu kullanarak
sys.path.append()
dosyalara el ile eklemeniz gerekir.Git klasöründen dosya içeri aktarıyorsanız, yola önceden
/Workspace/
eklemelisiniz. Örneğin,sys.path.append('/Workspace/...')
. Yolun atlanması/Workspace/
hatayla sonuçlanır.Modüller veya paketler not defteriyle aynı dizinde depolanıyorsa yolu el ile eklemeniz gerekmez. Ayrıca git klasörünün kök dizininden içeri aktarırken yolu el ile eklemeniz gerekmez çünkü kök dizin yola otomatik olarak eklenir.
import sys, os # You can omit the sys.path.append() statement when the imports are from the same directory as the notebook. sys.path.append(os.path.abspath('<module-path>')) import dlt from clickstream_prepared_module import * from pyspark.sql.functions import * from pyspark.sql.types import * create_clickstream_prepared_table(spark) @dlt.table( comment="A table containing the top pages linking to the Apache Spark page." ) def top_spark_referrers(): return ( dlt.read("clickstream_prepared") .filter(expr("current_page_title == 'Apache_Spark'")) .withColumnRenamed("previous_page_title", "referrer") .sort(desc("click_count")) .select("referrer", "click_count") .limit(10) )
öğesini içeri aktaracak Python modüllerini içeren dizinin yoluyla değiştirin
<module-path>
.Yeni not defterini kullanarak bir işlem hattı oluşturun.
İşlem hattını çalıştırmak için İşlem hattı ayrıntıları sayfasında Başlat'a tıklayın.
Python kodunu paket olarak da içeri aktarabilirsiniz. Delta Live Tables not defterindeki aşağıdaki kod parçacığı, paketi not defteriyle test_utils
aynı dizin içindeki dizinden dlt_packages
içeri aktarır. dlt_packages
dizini ve __init__.py
dosyalarını test_utils.py
içerir ve test_utils.py
işlevini create_test_table()
tanımlar:
import dlt
@dlt.table
def my_table():
return dlt.read(...)
# ...
import dlt_packages.test_utils as test_utils
test_utils.create_test_table(spark)