Spark için Python ile komut dosyası oluşturma

SPSS Modeler , verileri işlemek için Apache Spark çerçevesini kullanarak Python komut dosyalarını çalıştırabilir. Bu belge, sağlanan arabirimler için Python API açıklamasını sağlar.

SPSS Modeler kuruluşu bir Spark dağıtımı içerir.

verilere erişme

Veriler, Python/Spark komut dosyası ile yürütme bağlamı arasında Spark SQL DataFramebiçiminde aktarılır. Verileri tüketen bir komut dosyası (bir İçe Aktarma düğümü dışındaki herhangi bir düğüm), bağlamdan veri çerçevesini almalıdır:
inputData = asContext.getSparkInputData()
Veri üreten bir komut dosyası (uçbirim düğümü dışında herhangi bir düğüm), bağlama bir veri çerçevesi döndürmelidir:
asContext.setSparkOutputData(outputData)
Gerektiğinde bir RDD ' den çıkış veri çerçevesi yaratmak için SQL bağlamını kullanabilirsiniz:
outputData = sqlContext.createDataFrame(rdd)

Veri modelini tanımlama

Veri üreten bir düğüm, düğümün aşağı akışında görünen alanları tanımlayan bir veri modeli de tanımlamalıdır. Spark SQL terminolojisinde, veri modeli şemasıdır.

Python/Spark komut dosyası, çıkış veri modelini pyspsark.sql.types.StructType nesnesi biçiminde tanımlar. StructType , çıkış verileri çerçevesindeki bir satırı tanımlar ve StructField nesneleri listesinden oluşturulur. Her StructField , çıkış veri modelinde tek bir alanı açıklar.

Giriş verileri çerçevesinin :schema özniteliğini kullanarak giriş verileri için veri modelini elde edebilirsiniz:
inputSchema = inputData.schema
Değiştirilmeden geçirilen alanlar, giriş veri modelinden çıkış veri modeline kopyalanabilir. Çıkış veri modelinde yeni ya da değiştirilmiş alanlar StructField oluşturucusu kullanılarak yaratılabilir:
field = StructField(name, dataType, nullable=True, metadata=None)

Oluşturucuyla ilgili bilgi için Spark belgelerinize bakın.

En azından alan adını ve veri tipini sağlamalısınız. İsteğe bağlı olarak, alan için bir ölçü, rol ve açıklama sağlamak üzere meta veri belirtebilirsiniz (bkz. Veri meta verileri).

DataModelYalnızca kip

SPSS Modeler ' in aşağı akımlı düzenlemeyi etkinleştirmek için düğüm çalışmadan önce bir düğüme ilişkin çıkış veri modelini bilmesi gerekir. Bir Python/Spark düğümüne ilişkin çıkış veri modelini edinmek için, SPSS Modeler komut dosyasını yalnızca özel bir veri modeli kipinde çalıştırır; burada kullanılabilecek veri yoktur. Komut dosyası, Analytic Server bağlam nesnesindeki isComputeDataModelOnly yöntemini kullanarak bu kipi tanımlayabilir.

Bir dönüştürme düğümüne ilişkin komut dosyası şu genel örüntüyü izleyebilir:
if asContext.isComputeDataModelOnly():   
        inputSchema = asContext.getSparkInputSchema()   
        outputSchema = ... # construct the output data model   
        asContext.setSparkOutputSchema(outputSchema)
else:   
        inputData = asContext.getSparkInputData()   
        outputData = ... # construct the output data frame    
        asContext.setSparkOutputData(outputData)

Model oluşturma

Model oluşturan bir düğümün, modeli uygulayan düğümün daha sonra tam olarak yeniden yaratabileceği şekilde modeli yeterince tanımlayan içerik yürütme bağlamına dönmesi gerekir.

Model içeriği, anahtarların ve değerlerin yalnızca oluşturma ve puan düğümleri tarafından bilindiği ve SPSS Modeler tarafından herhangi bir şekilde yorumlanmadığı anahtar/değer çiftleri cinsinden tanımlanır. İsteğe bağlı olarak düğüm, SPSS Modeler ' in model nugget içindeki kullanıcı tarafından bilinen tiplere sahip olan değerleri görüntüleyebilmesi amacıyla bir MIME tipini bir değere atayabilir.

Bu bağlamdaki bir değer PMML, HTML, resim vb. olabilir. Model içeriğine bir değer eklemek için (oluşturma komut dosyasında):
asContext.setModelContentFromString(key, value, mimeType=None)
Model içeriğinden bir değer almak için (puan komut dosyasında):
value = asContext.getModelContentToString(key)
Bir modelin ya da bir parçasının dosya sistemindeki bir dosyaya ya da klasöre saklandığı bir kısayol olarak, bu konumda saklanan tüm içeriği tek bir çağrıda (oluşturma komut dosyasında) paketleyebilirsiniz:
asContext.setModelContentFromPath(key, path)

Bu durumda, kod paketi çeşitli içerik tipleri içerebileceği için MIME tipi belirtilmesi seçeneği yoktur.

Modeli oluştururken içeriği depolamak için geçici bir yere gereksinim duyarsanız, bağlamdan uygun bir konum elde edebilirsiniz:
path = asContext.createTemporaryFolder()
Var olan içeriği dosya sistemindeki geçici bir konuma (puan komut dosyasında) almak için:
path = asContext.getModelContentToPath(key)

Hata İşlemleri

Hata yükseltmek için komut dosyasından bir kural dışı durum yayınlayıp SPSS Modeler kullanıcısına görüntüleyin. Bazı kural dışı durumlar spss.pyspark.exceptionsmodülünde önceden tanımlanmıştır. Örneğin:
from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
     raise ASContextException("message to display to user")