LogoLogo
SnowflakeDocumentation Home
  • Snowpark Migration Accelerator Documentation
  • General
    • Introduction
    • Getting Started
      • Download and Access
      • Installation
        • Windows Installation
        • MacOS Installation
        • Linux Installation
    • Conversion Software Terms of Use
      • Open Source Libraries
    • Release Notes
      • Old Version Release Notes
        • SC Spark Scala Release Notes
          • Known Issues
        • SC Spark Python Release Notes
          • Known Issues
    • Roadmap
  • User Guide
    • Overview
    • Before Using the SMA
      • Supported Platforms
      • Supported Filetypes
      • Code Extraction
      • Pre-Processing Considerations
    • Project Overview
      • Project Setup
      • Configuration and Settings
      • Tool Execution
    • Assessment
      • How the Assessment Works
      • Assessment Quick Start
      • Understanding the Assessment Summary
      • Readiness Scores
      • Output Reports
        • Curated Reports
        • SMA Inventories
        • Generic Inventories
        • Assessment zip file
      • Output Logs
      • Spark Reference Categories
    • Conversion
      • How the Conversion Works
      • Conversion Quick Start
      • Conversion Setup
      • Understanding the Conversion Assessment and Reporting
      • Output Code
    • Using the SMA CLI
      • Additional Parameters
  • Use Cases
    • Assessment Walkthrough
      • Walkthrough Setup
        • Notes on Code Preparation
      • Running the Tool
      • Interpreting the Assessment Output
        • Assessment Output - In Application
        • Assessment Output - Reports Folder
      • Running the SMA Again
    • Conversion Walkthrough
    • Sample Project
    • Using SMA with Docker
    • SMA CLI Walkthrough
  • Issue Analysis
    • Approach
    • Issue Code Categorization
    • Issue Codes by Source
      • General
      • Python
        • SPRKPY1000
        • SPRKPY1001
        • SPRKPY1002
        • SPRKPY1003
        • SPRKPY1004
        • SPRKPY1005
        • SPRKPY1006
        • SPRKPY1007
        • SPRKPY1008
        • SPRKPY1009
        • SPRKPY1010
        • SPRKPY1011
        • SPRKPY1012
        • SPRKPY1013
        • SPRKPY1014
        • SPRKPY1015
        • SPRKPY1016
        • SPRKPY1017
        • SPRKPY1018
        • SPRKPY1019
        • SPRKPY1020
        • SPRKPY1021
        • SPRKPY1022
        • SPRKPY1023
        • SPRKPY1024
        • SPRKPY1025
        • SPRKPY1026
        • SPRKPY1027
        • SPRKPY1028
        • SPRKPY1029
        • SPRKPY1030
        • SPRKPY1031
        • SPRKPY1032
        • SPRKPY1033
        • SPRKPY1034
        • SPRKPY1035
        • SPRKPY1036
        • SPRKPY1037
        • SPRKPY1038
        • SPRKPY1039
        • SPRKPY1040
        • SPRKPY1041
        • SPRKPY1042
        • SPRKPY1043
        • SPRKPY1044
        • SPRKPY1045
        • SPRKPY1046
        • SPRKPY1047
        • SPRKPY1048
        • SPRKPY1049
        • SPRKPY1050
        • SPRKPY1051
        • SPRKPY1052
        • SPRKPY1053
        • SPRKPY1054
        • SPRKPY1055
        • SPRKPY1056
        • SPRKPY1057
        • SPRKPY1058
        • SPRKPY1059
        • SPRKPY1060
        • SPRKPY1061
        • SPRKPY1062
        • SPRKPY1063
        • SPRKPY1064
        • SPRKPY1065
        • SPRKPY1066
        • SPRKPY1067
        • SPRKPY1068
        • SPRKPY1069
        • SPRKPY1070
        • SPRKPY1071
        • SPRKPY1072
        • SPRKPY1073
        • SPRKPY1074
        • SPRKPY1075
        • SPRKPY1076
        • SPRKPY1077
        • SPRKPY1078
        • SPRKPY1079
        • SPRKPY1080
        • SPRKPY1081
        • SPRKPY1082
        • SPRKPY1083
        • SPRKPY1084
        • SPRKPY1085
        • SPRKPY1086
        • SPRKPY1087
        • SPRKPY1088
        • SPRKPY1089
        • SPRKPY1101
      • Spark Scala
        • SPRKSCL1000
        • SPRKSCL1001
        • SPRKSCL1002
        • SPRKSCL1100
        • SPRKSCL1101
        • SPRKSCL1102
        • SPRKSCL1103
        • SPRKSCL1104
        • SPRKSCL1105
        • SPRKSCL1106
        • SPRKSCL1107
        • SPRKSCL1108
        • SPRKSCL1109
        • SPRKSCL1110
        • SPRKSCL1111
        • SPRKSCL1112
        • SPRKSCL1113
        • SPRKSCL1114
        • SPRKSCL1115
        • SPRKSCL1116
        • SPRKSCL1117
        • SPRKSCL1118
        • SPRKSCL1119
        • SPRKSCL1120
        • SPRKSCL1121
        • SPRKSCL1122
        • SPRKSCL1123
        • SPRKSCL1124
        • SPRKSCL1125
        • SPRKSCL1126
        • SPRKSCL1127
        • SPRKSCL1128
        • SPRKSCL1129
        • SPRKSCL1130
        • SPRKSCL1131
        • SPRKSCL1132
        • SPRKSCL1133
        • SPRKSCL1134
        • SPRKSCL1135
        • SPRKSCL1136
        • SPRKSCL1137
        • SPRKSCL1138
        • SPRKSCL1139
        • SPRKSCL1140
        • SPRKSCL1141
        • SPRKSCL1142
        • SPRKSCL1143
        • SPRKSCL1144
        • SPRKSCL1145
        • SPRKSCL1146
        • SPRKSCL1147
        • SPRKSCL1148
        • SPRKSCL1149
        • SPRKSCL1150
        • SPRKSCL1151
        • SPRKSCL1152
        • SPRKSCL1153
        • SPRKSCL1154
        • SPRKSCL1155
        • SPRKSCL1156
        • SPRKSCL1157
        • SPRKSCL1158
        • SPRKSCL1159
        • SPRKSCL1160
        • SPRKSCL1161
        • SPRKSCL1162
        • SPRKSCL1163
        • SPRKSCL1164
        • SPRKSCL1165
        • SPRKSCL1166
        • SPRKSCL1167
        • SPRKSCL1168
        • SPRKSCL1169
        • SPRKSCL1170
        • SPRKSCL1171
        • SPRKSCL1172
        • SPRKSCL1173
        • SPRKSCL1174
        • SPRKSCL1175
      • SQL
        • SparkSQL
          • SPRKSPSQL1001
          • SPRKSPSQL1002
          • SPRKSPSQL1003
          • SPRKSPSQL1004
          • SPRKSPSQL1005
          • SPRKSPSQL1006
        • Hive
          • SPRKHVSQL1001
          • SPRKHVSQL1002
          • SPRKHVSQL1003
          • SPRKHVSQL1004
          • SPRKHVSQL1005
          • SPRKHVSQL1006
      • Pandas
        • PNDSPY1001
        • PNDSPY1002
        • PNDSPY1003
        • PNDSPY1004
      • DBX
        • SPRKDBX1001
    • Troubleshooting the Output Code
      • Locating Issues
    • Workarounds
    • Deploying the Output Code
  • Translation Reference
    • Translation Reference Overview
    • SIT Tagging
      • SQL statements
    • SQL Embedded code
    • HiveSQL
      • Supported functions
    • Spark SQL
      • Spark SQL DDL
        • Create Table
          • Using
      • Spark SQL DML
        • Merge
        • Select
          • Distinct
          • Values
          • Join
          • Where
          • Group By
          • Union
      • Spark SQL Data Types
      • Supported functions
  • Workspace Estimator
    • Overview
    • Getting Started
  • INTERACTIVE ASSESSMENT APPLICATION
    • Overview
    • Installation Guide
  • Support
    • General Troubleshooting
      • How do I give SMA permission to the config folder?
      • Invalid Access Code error on VDI
      • How do I give SMA permission to Documents, Desktop, and Downloads folders?
    • Frequently Asked Questions (FAQ)
      • Using SMA with Jupyter Notebooks
      • How to request an access code
      • Sharing the Output with Snowflake
      • DBC files explode
    • Glossary
    • Contact Us
Powered by GitBook
On this page
  • Using the CLI
  • Viewing the Output
  • Running the CLI Programmatically
  1. Use Cases

SMA CLI Walkthrough

A walkthrough on using the SMA CLI

PreviousUsing SMA with DockerNextApproach

Last updated 5 months ago

The can take code written in Python or Scala for Spark, report on the compatibility with Snowpark, and convert some references from the Spark API to the Snowpark API. Where conversion is not possible, the tool identifies what cannot be converted and reports on it. Beyond the Spark API, the SMA can also inventory any third party library import in script files or notebooks, and will produce an editable report that can be used to share the compatibility between a codebase(s) Spark and Snowpark code.

Recently, Snowflake published the CLI for the SMA. Let’s walk through how to use it by itself and in a script.

Using the CLI

You can download the CLI from of this documentation. Choose the operating system available on the machine or container where you will be using the CLI. When you download the CLI, you can place it in any location or container where you have the ability to access it.

NOTE: This walkthrough was done using a Mac. The screenshots shown here are from a Mac computer, but Windows and Linux users can expect a similar experience.

Unzip the downloaded package file (.zip or .tar depending on your OS). When you do, you’ll see a series of folders, but ultimately the CLI itself is available in the orchestrator folder:

SMA CLI in the Orchestrator Directory

If you launch a terminal or command prompt window in this folder, you can run the CLI. To test this, check the version number of the CLI by using ./sma –version

You should see a result similar to this:

The list of arguments that can be passed to the CLI is available in the SMA documentation, but we’ll walkthrough some of the key ones here.

./sma show-ac

Once you are activated, you can run a conversion. This will require you to specify an input and an output directory, and if you have not setup a project file already, you will need to specify a user email, organization name, and project name as well. These parameters are not necessary if you are going to keep them the same moving forward. You could only pass the input and output directory. This could look like this:

./sma -i '/your/INput/directory/path/here' -o '/your/OUTput/directory/path/here' -e your@email.com -c Your-Organization -p Your-Project-Name

This will give you a summary of the execution information that you have entered and ask if you’d like to continue:

If you’d rather not be prompted to confirm, you can pass an additional parameter (--yes or -y) to bypass the confirmation. Note that this will be essential when programmatically calling the CLI from a script, which we will see below.

The tool will print out a lot of information on what it is doing:

Viewing the Output

Running the CLI Programmatically

Coming soon! The SMA team will share a script that allows you to call the SMA CLI programmatically on mulitple directories.


SMA Version Information

The SMA CLI (like the SMA application) is a local application. To scan code files with the SMA, they need to be locally accessible to the CLI (meaning, you need to be able to access them from the CLI). The same type of files that the regular SMA can process are also available to process from the CLI. You can find .

NOTE: if you need a sample codebase to run the CLI through, you can reference the sample codebase mentioned in or Conversion walkthroughs in the SMA documentation.

The SMA CLI defaults to running in , not . (You can tell the SMA to run the CLI in assessment mode by passing .) When running a conversion, you will need to have a valid access code. You can check to see if you have a valid access code by running the following command:

License Information

If you do not have a valid access code, you can request one by following . One will be emailed to you, and you can use parameter in the CLI to install it.

Project Information Section
Project Information Printed

As long as it continues to print, it is still running. The prompt will show up again when the tool has finished. The amount that is printed might seem overwhelming as the tool will print every process it runs through, every issue it encounters, and every stage step that it completes (or fails to complete). You do not need to spend too much time pouring through this. All of this will also be available in .

The SMA CLI’s output is identical to the SMA application’s output. In the output folder directory that you specified when running the tool, you will find the , , and folders. The output code is in the output folder.

Output Directory from the SMA

For more information on working through converted code output by the SMA, you can view .

You can give the CLI a try today. If you have any questions, you can reach out to the SMA team at .

the supported filetypes in the SMA documentation
the Assessment
Conversion mode
Assessment mode
the -a argument
the instructions in the SMA documentation
the install access code
the Logs output folder
the conversion walkthrough
sma-support@snowflake.com
Reports
Logs
Output
Snowpark Migration Accelerator (SMA)
the Download and Access section