Automate Spark Integration Tasks from PowerShell

Ready to get started?

Download for a free trial:

Download Now

Learn more:

Apache Spark ADO.NET Provider

Rapidly create and deploy powerful .NET applications that integrate with Apache Spark.

Are you looking for a quick and easy way to access Spark data from PowerShell? We show how to use the Cmdlets for Spark and the CData ADO.NET Provider for Spark to connect to Spark data and synchronize, automate, download, and more.

The CData Cmdlets for Spark are standard PowerShell cmdlets that make it easy to accomplish data cleansing, normalization, backup, and other integration tasks by enabling real-time and bidirectional access to Spark.

Cmdlets or ADO.NET?

The cmdlets are not only a PowerShell interface to the Spark API, but also an SQL interface; this tutorial shows how to use both to create, retrieve, update, and delete Spark data. We also show examples of the ADO.NET equivalent, which is possible with the CData ADO.NET Provider for Spark. To access Spark data from other .NET applications, like LINQPad, use the CData ADO.NET Provider for Spark.

After obtaining the needed connection properties, accessing Spark data in PowerShell consists of three basic steps.

Set the Server, Database, User, and Password connection properties to connect to SparkSQL.


  1. Install the module:

    Install-Module SparkSQLCmdlets
  2. Connect:

    $sparksql = Connect-SparkSQL -Server "$Server"
  3. Search for and retrieve data:

    $country = "US" $customers = Select-SparkSQL -Connection $sparksql -Table "Customers" -Where "Country = `'$Country`'" $customers

    You can also use the Invoke-SparkSQL cmdlet to execute SQL commands:

    $customers = Invoke-SparkSQL -Connection $sparksql -Query 'SELECT * FROM Customers WHERE Country = @Country' -Params @{'@Country'='US'}


  1. Load the provider's assembly:

    [Reflection.Assembly]::LoadFile("C:\Program Files\CData\CData ADO.NET Provider for Spark\lib\System.Data.CData.SparkSQL.dll")
  2. Connect to Spark:

    $conn= New-Object System.Data.CData.SparkSQL.SparkSQLConnection("Server=;") $conn.Open()
  3. Instantiate the SparkSQLDataAdapter, execute an SQL query, and output the results:

    $sql="SELECT City, Balance from Customers" $da= New-Object System.Data.CData.SparkSQL.SparkSQLDataAdapter($sql, $conn) $dt= New-Object System.Data.DataTable $da.Fill($dt) $dt.Rows | foreach { Write-Host $ $_.balance }

Update Spark Data


Update-SparkSQL -Connection $SparkSQL -Columns @('City','Balance') -Values @('MyCity', 'MyBalance') -Table Customers -Id "MyId"


$cmd = New-Object System.Data.CData.SparkSQL.SparkSQLCommand("UPDATE Customers SET Country='US' WHERE Id = @myId", $conn) $cmd.Parameters.Add(new System.Data.CData.SparkSQL.SparkSQLParameter("@myId","10456255-0015501366")) $cmd.ExecuteNonQuery()

Insert Spark Data


Add-SparkSQL -Connection $SparkSQL -Table Customers -Columns @("City", "Balance") -Values @("MyCity", "MyBalance")


$cmd = New-Object System.Data.CData.SparkSQL.SparkSQLCommand("INSERT INTO Customers (Country) VALUES (@myCountry)", $conn) $cmd.Parameters.Add(new System.Data.CData.SparkSQL.SparkSQLParameter("@myCountry","US")) $cmd.ExecuteNonQuery()

Delete Spark Data


Remove-SparkSQL -Connection $SparkSQL -Table "Customers" -Id "MyId"


$cmd = New-Object System.Data.CData.SparkSQL.SparkSQLCommand("DELETE FROM Customers WHERE Id=@myId", $conn) $cmd.Parameters.Add(new System.Data.CData.SparkSQL.SparkSQLParameter("@myId","001d000000YBRseAAH")) $cmd.ExecuteNonQuery()