使用 Python for Spark 來編製 Script
SPSS Modeler 可以使用 Apache Spark 架構來執行 Python Script ,以處理資料。 本文件提供所提供介面的 Python API 說明。
SPSS Modeler 安裝包括 Spark 發行套件。
存取資料
inputData = asContext.getSparkInputData()asContext.setSparkOutputData(outputData)outputData = sqlContext.createDataFrame(rdd)定義資料模型
產生資料的節點還必須定義資料模型以說明節點的欄位可見下游。 在 Spark SQL 術語中,資料模型就是綱目。
Python/Spark Script 會以 pyspsark.sql.types.StructType 物件形式定義其輸出資料模型。 StructType 說明輸出資料訊框中的列,並且是從 StructField 物件清單進行建構。 每一個 StructField 皆說明輸出資料模型中的單一欄位。
:schema 屬性來取得輸入資料的資料模型:inputSchema = inputData.schemaStructField 建構子來建立輸出資料模型中新的或已修改的欄位:field = StructField(name, dataType, nullable=True, metadata=None)如需建構子的相關資訊,請參閱 Spark 文件。
您必須至少提供欄位名稱及其資料類型。 您可以選擇性地指定 meta 資料,以提供欄位的測量、角色及說明 (請參閱 資料 meta 資料)。
DataModelOnly 模式
SPSS Modeler 需要在節點執行之前知道節點的輸出資料模型,才能啟用下游編輯。 為了取得 Python/Spark 節點的輸出資料模型, SPSS Modeler 會在沒有可用資料的特殊 資料模型 模式下執行 Script。 Script 可以在 Analytic Server 環境定義物件上使用 isComputeDataModelOnly 方法來識別此模式。
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)建置模型
用於建置模型的節點必須回到執行環境定義,部分足以用來說明模型的內容可以在稍後確切地重建模型。
模型內容以鍵/值配對定義,其中鍵和值的意義只有建置節點和評分節點知道,且 SPSS Modeler 不會以任何方式解譯。 節點可以選擇性地將 MIME 類型指派給某個值,其目的是 SPSS Modeler 可能會在模型塊中顯示具有使用者已知類型的那些值。
asContext.setModelContentFromString(key, value, mimeType=None)value = asContext.getModelContentToString(key)asContext.setModelContentFromPath(key, path)請注意,在此情況下,無法指定 MIME 類型,因為組合可能包含各種內容類型。
path = asContext.createTemporaryFolder()path = asContext.getModelContentToPath(key)錯誤處理
spss.pyspark.exceptions 中預先定義了部分異常狀況。 例如:from spss.pyspark.exceptions import ASContextException
if ... some error condition ...:
raise ASContextException("message to display to user")