SCOREACCEL Procedure
Example 9: Publish a Model to ADLS and Run in Azure Synapse
| Features: |
CASLIB statement CAS procedure PROC SCOREACCEL statement PUBLISHMODEL statement RUNMODEL statement DELETEMODEL statement |
Details
In this example, PROC SCOREACCEL publishes a model to Microsoft Azure Data Lake Storage Gen2 (ADLS). Then PROC SCOREACCEL runs the model in Azure Synapse by using the SAS Embedded Process for Spark. The model runs against an SQL Server table.
For Synapse, PROC SCOREACCEL uses Azure Active Directory (Azure AD) application registration and role-based access control (RBAC). For essential information, such as how to specify the Synapse Spark pool Livy REST URL, and the requirements for SQL Server, see In-Database Model Scoring.
Program
cas mysess sessopts=(azuretenantid="tenant-id");
caslib myadls datasource=(
srctype="adls"
accountname="myaccount",
applicationid="application-id",
filesystem="mystorage",
dnssuffix="dfs.core.windows.net"
);
proc scoreaccel sessref=mysess;
publishmodel
exttype=filesystem
caslib="myadls"
password="RBAC-client-secret"
modelname="mymodel"
modeldir="/scoring/models"
programfile="/myfiles/myprogram.ds2";
run;
quit;
caslib myspark datasource=(
srctype="spark",
platform="synapse",
username="application-id",
password="RBAC-client-secret",
schema="SQL-server-database-name",
hadoopjarpath="path-to-hadoop-jar-files",
jobmanagementurl="Livy-rest-url"
);
proc cas;
sparkEmbeddedProcess.startSparkEP caslib="myspark"
executorInstances=2 executorCores=2
executorMemory=10 driverMemory=4;
run;
quit;
proc scoreaccel sessref=mysess;
runmodel
exttype=spark
caslib="myspark"
modelname="mymodel"
modeldir="/scoring/models"
intable="SQL-server-database-schema-name.in-table-name"
outtable="SQL-server-database-schema-name.out-table-name";
run;
quit;
proc scoreaccel sessref=mysess;
deletemodel
exttype=filesystem
caslib="myadls"
password="RBAC-client-secret"
modelname="mymodel"
modeldir="/scoring/models";
run;
quit;
proc cas;
sparkEmbeddedProcess.stopSparkEP caslib="myspark";
run;
quit;
Program Description
cas mysess sessopts=(azuretenantid="tenant-id");
caslib myadls datasource=(
srctype="adls"
accountname="myaccount",
applicationid="application-id",
filesystem="mystorage",
dnssuffix="dfs.core.windows.net"
);
proc scoreaccel sessref=mysess;
publishmodel
exttype=filesystem
caslib="myadls"
password="RBAC-client-secret"
modelname="mymodel"
modeldir="/scoring/models"
programfile="/myfiles/myprogram.ds2";
run;
quit;
caslib myspark datasource=(
srctype="spark",
platform="synapse",
username="application-id",
password="RBAC-client-secret",
schema="SQL-server-database-name",
hadoopjarpath="path-to-hadoop-jar-files",
jobmanagementurl="Livy-rest-url"
);
proc cas;
sparkEmbeddedProcess.startSparkEP caslib="myspark"
executorInstances=2 executorCores=2
executorMemory=10 driverMemory=4;
run;
quit;
proc scoreaccel sessref=mysess;
runmodel
exttype=spark
caslib="myspark"
modelname="mymodel"
modeldir="/scoring/models"
intable="SQL-server-database-schema-name.in-table-name"
outtable="SQL-server-database-schema-name.out-table-name";
run;
quit;
proc scoreaccel sessref=mysess;
deletemodel
exttype=filesystem
caslib="myadls"
password="RBAC-client-secret"
modelname="mymodel"
modeldir="/scoring/models";
run;
quit;
proc cas;
sparkEmbeddedProcess.stopSparkEP caslib="myspark";
run;
quit;