Ready to get started?

Learn more about the CData ADO.NET Provider for Apache Spark or download a free trial:

Download Now

Automate Spark Integration Tasks from PowerShell

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.

PowerShell

  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'}

ADO.NET

  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=127.0.0.1;") $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 $_.city $_.balance }

Update Spark Data

PowerShell

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

ADO.NET

$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

PowerShell

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

ADO.NET

$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

PowerShell

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

ADO.NET

$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()