public override void ExecuteCmdlet() { this.Language = LanguageType.Parse(this.Language); if (this.IsParameterBound(c => c.SessionObject)) { this.WorkspaceName = this.SessionObject.WorkspaceName; this.SparkPoolName = this.SessionObject.SparkPoolName; this.SessionId = this.IsParameterBound(c => c.SessionId) ? this.SessionId : this.SessionObject.Id.Value; this.Language = this.IsParameterBound(c => c.Language) ? this.Language : this.SessionObject.Language; } if (this.IsParameterBound(c => c.FilePath)) { this.Code = this.ReadFileAsText(this.FilePath); } var livyRequest = new SparkStatementOptions { Kind = this.Language, Code = this.Code }; if (this.ShouldProcess(this.SparkPoolName, string.Format(Resources.InvokingSparkStatement, this.SparkPoolName, this.WorkspaceName))) { var sessionStmt = SynapseAnalyticsClient.SubmitSparkSessionStatement(this.SessionId, livyRequest, waitForCompletion: true); var psSessionStmt = new PSSynapseExtendedSparkStatement(sessionStmt); WriteObject(psSessionStmt); } }
public async Task TestSparkSessionJobWithPublicConstructor() { SparkSessionClient client = CreateClient(); // Start the Spark session SparkSessionOptions createParams = SparkTestUtilities.CreateSparkSessionRequestParameters(Recording); SparkSessionOperation sessionOperation = await client.StartCreateSparkSessionAsync(createParams); SparkSessionOperation anotherSessionOperation = InstrumentOperation(new SparkSessionOperation(int.Parse(sessionOperation.Id), client)); SparkSession sessionCreateResponse = await anotherSessionOperation.WaitForCompletionAsync(); // Verify the Spark session completes successfully Assert.True(LivyStates.Idle == sessionCreateResponse.State, string.Format( "Session: {0} did not return success. Current job state: {1}. Actual result: {2}. Error (if any): {3}", sessionCreateResponse.Id, sessionCreateResponse.State, sessionCreateResponse.Result, string.Join(", ", sessionCreateResponse.Errors ?? new List <SparkServiceError>()) ) ); // Execute Spark statement in the session var sparkStatementOptions = new SparkStatementOptions { Kind = SparkStatementLanguageType.Spark, Code = @"print(""Hello world"")" }; SparkStatementOperation statementOperation = await client.StartCreateSparkStatementAsync(sessionCreateResponse.Id, sparkStatementOptions); SparkStatementOperation anotherStatementOperation = InstrumentOperation(new SparkStatementOperation(int.Parse(sessionOperation.Id), int.Parse(statementOperation.Id), client)); SparkStatement createStatementResponse = await anotherStatementOperation.WaitForCompletionAsync(); Assert.NotNull(createStatementResponse); // Verify the Spark statement completes successfully Assert.True(LivyStatementStates.Available == createStatementResponse.State, string.Format( "Spark statement: {0} did not return success. Current job state: {1}. Error (if any): {2}", createStatementResponse.Id, createStatementResponse.State, createStatementResponse.Output.ErrorValue) ); // Verify the output Dictionary <string, object> outputData = createStatementResponse.Output.Data as Dictionary <string, object>; Assert.AreEqual("Hello world", outputData["text/plain"] as string); // Get the list of Spark statements and check that the executed statement exists Response <SparkStatementCollection> listStatementResponse = await client.GetSparkStatementsAsync(sessionCreateResponse.Id); Assert.NotNull(listStatementResponse.Value); Assert.IsTrue(listStatementResponse.Value.Statements.Any(stmt => stmt.Id == createStatementResponse.Id)); // Get the list of Spark session and check that the created session exists List <SparkSession> listSessionResponse = await SparkTestUtilities.ListSparkSessionsAsync(client); Assert.NotNull(listSessionResponse); Assert.IsTrue(listSessionResponse.Any(session => session.Id == sessionCreateResponse.Id)); }
public void ExecuteSparkStatementSync() { // Environment variable with the Synapse workspace endpoint. string endpoint = TestEnvironment.EndpointUrl; // Environment variable with the Synapse Spark pool name. string sparkPoolName = TestEnvironment.SparkPoolName; #region Snippet:CreateSparkSessionClient SparkSessionClient client = new SparkSessionClient(new Uri(endpoint), sparkPoolName, new DefaultAzureCredential()); #endregion #region Snippet:CreateSparkSession SparkSessionOptions request = new SparkSessionOptions(name: $"session-{Guid.NewGuid()}") { DriverMemory = "28g", DriverCores = 4, ExecutorMemory = "28g", ExecutorCores = 4, ExecutorCount = 2 }; SparkSession sessionCreated = client.CreateSparkSession(request); // Waiting session creation completion sessionCreated = PollSparkSession(client, sessionCreated); #endregion #region Snippet:GetSparkSession SparkSession session = client.GetSparkSession(sessionCreated.Id); Debug.WriteLine($"Session is returned with name {session.Name} and state {session.State}"); #endregion #region Snippet:CreateSparkStatement SparkStatementOptions sparkStatementRequest = new SparkStatementOptions { Kind = SparkStatementLanguageType.Spark, Code = @"print(""Hello world\n"")" }; SparkStatement statementCreated = client.CreateSparkStatement(sessionCreated.Id, sparkStatementRequest); // Wait operation completion statementCreated = PollSparkStatement(client, sessionCreated.Id, statementCreated); #endregion #region Snippet:GetSparkStatement SparkStatement statement = client.GetSparkStatement(sessionCreated.Id, statementCreated.Id); Debug.WriteLine($"Statement is returned with id {statement.Id} and state {statement.State}"); #endregion #region Snippet:CancelSparkStatement SparkStatementCancellationResult cancellationResult = client.CancelSparkStatement(sessionCreated.Id, statementCreated.Id); Debug.WriteLine($"Statement is cancelled with message {cancellationResult.Msg}"); #endregion #region Snippet:CancelSparkSession Response operation = client.CancelSparkSession(sessionCreated.Id); #endregion }
public async Task TestSparkSessionJob() { SparkSessionClient client = CreateClient(); // Start the Spark session SparkSessionOptions createParams = SparkTestUtilities.CreateSparkSessionRequestParameters(Recording); SparkSessionOperation sessionOperation = await client.StartCreateSparkSessionAsync(createParams); SparkSession sessionCreateResponse = await sessionOperation.WaitForCompletionAsync(); // Verify the Spark session completes successfully Assert.True("idle".Equals(sessionCreateResponse.State, StringComparison.OrdinalIgnoreCase) && sessionCreateResponse.Result == SparkSessionResultType.Succeeded, string.Format( "Session: {0} did not return success. Current job state: {1}. Actual result: {2}. Error (if any): {3}", sessionCreateResponse.Id, sessionCreateResponse.State, sessionCreateResponse.Result, string.Join(", ", sessionCreateResponse.Errors ?? new List <SparkServiceError>()) ) ); // Execute Spark statement in the session var sparkStatementOptions = new SparkStatementOptions { Kind = SparkStatementLanguageType.Spark, Code = @"print(""Hello world\n"")" }; SparkStatementOperation statementOperation = await client.StartCreateSparkStatementAsync(sessionCreateResponse.Id, sparkStatementOptions); SparkStatement createStatementResponse = await statementOperation.WaitForCompletionAsync(); Assert.NotNull(createStatementResponse); // Verify the Spark statement completes successfully Assert.True("ok".Equals(createStatementResponse.State, StringComparison.OrdinalIgnoreCase), string.Format( "Spark statement: {0} did not return success. Current job state: {1}. Error (if any): {2}", createStatementResponse.Id, createStatementResponse.State, createStatementResponse.Output.ErrorValue) ); // Verify the output Dictionary <string, string> outputData = JsonSerializer.Deserialize <Dictionary <string, string> >(createStatementResponse.Output.Data as string); Assert.Equals("Hello world", outputData["text/plain"]); // Get the list of Spark statements and check that the executed statement exists Response <SparkStatementCollection> listStatementResponse = await client.GetSparkStatementsAsync(sessionCreateResponse.Id); Assert.NotNull(listStatementResponse.Value); Assert.IsTrue(listStatementResponse.Value.Statements.Any(stmt => stmt.Id == createStatementResponse.Id)); // Get the list of Spark session and check that the created session exists List <SparkSession> listSessionResponse = await SparkTestUtilities.ListSparkSessionsAsync(client); Assert.NotNull(listSessionResponse); Assert.IsTrue(listSessionResponse.Any(session => session.Id == sessionCreateResponse.Id)); }
public SparkStatement SubmitSparkSessionStatement(int sessionId, SparkStatementOptions sparkStatementOptions, bool waitForCompletion) { var statement = _sparkSessionClient.CreateSparkStatement(sessionId, sparkStatementOptions); if (!waitForCompletion) { return(statement); } return(PollSparkSessionStatement(sessionId, statement)); }
public virtual Response <SparkStatement> CreateSparkStatement(int sessionId, SparkStatementOptions sparkStatementOptions, CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("SparkSessionClient.CreateSparkStatement"); scope.Start(); try { return(RestClient.CreateSparkStatement(sessionId, sparkStatementOptions, cancellationToken)); } catch (Exception e) { scope.Failed(e); throw; } }
public void ExecuteSparkStatementSync() { #region Snippet:CreateSparkSessionClient // Replace the strings below with the spark and endpoint information string sparkPoolName = "<my-spark-pool-name>"; /*@@*/ sparkPoolName = TestEnvironment.SparkPoolName; string endpoint = "<my-endpoint-url>"; /*@@*/ endpoint = TestEnvironment.EndpointUrl; SparkSessionClient client = new SparkSessionClient(new Uri(endpoint), sparkPoolName, new DefaultAzureCredential()); #endregion #region Snippet:CreateSparkSession SparkSessionOptions request = new SparkSessionOptions(name: $"session-{Guid.NewGuid()}") { DriverMemory = "28g", DriverCores = 4, ExecutorMemory = "28g", ExecutorCores = 4, ExecutorCount = 2 }; SparkSessionOperation createSessionOperation = client.StartCreateSparkSession(request); while (!createSessionOperation.HasCompleted) { System.Threading.Thread.Sleep(2000); createSessionOperation.UpdateStatus(); } SparkSession sessionCreated = createSessionOperation.Value; #endregion #region Snippet:GetSparkSession SparkSession session = client.GetSparkSession(sessionCreated.Id); Debug.WriteLine($"Session is returned with name {session.Name} and state {session.State}"); #endregion #region Snippet:CreateSparkStatement SparkStatementOptions sparkStatementRequest = new SparkStatementOptions { Kind = SparkStatementLanguageType.Spark, Code = @"print(""Hello world\n"")" }; SparkStatementOperation createStatementOperation = client.StartCreateSparkStatement(sessionCreated.Id, sparkStatementRequest); while (!createStatementOperation.HasCompleted) { System.Threading.Thread.Sleep(2000); createStatementOperation.UpdateStatus(); } SparkStatement statementCreated = createStatementOperation.Value; #endregion #region Snippet:GetSparkStatement SparkStatement statement = client.GetSparkStatement(sessionCreated.Id, statementCreated.Id); Debug.WriteLine($"Statement is returned with id {statement.Id} and state {statement.State}"); #endregion #region Snippet:CancelSparkStatement SparkStatementCancellationResult cancellationResult = client.CancelSparkStatement(sessionCreated.Id, statementCreated.Id); Debug.WriteLine($"Statement is cancelled with message {cancellationResult.Message}"); #endregion #region Snippet:CancelSparkSession Response operation = client.CancelSparkSession(sessionCreated.Id); #endregion }
private async Task <SparkStatementOperation> StartCreateSparkStatementInternal(bool async, int sessionId, SparkStatementOptions sparkStatementOptions, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _clientDiagnostics.CreateScope($"{nameof(SparkSessionClient)}.{nameof(StartCreateSparkStatement)}"); scope.Start(); try { Response <SparkStatement> statementSession; if (async) { statementSession = await RestClient.CreateSparkStatementAsync(sessionId, sparkStatementOptions, cancellationToken).ConfigureAwait(false); } else { statementSession = RestClient.CreateSparkStatement(sessionId, sparkStatementOptions, cancellationToken); } return(new SparkStatementOperation(this, _clientDiagnostics, statementSession, sessionId)); } catch (Exception e) { scope.Failed(e); throw; } }
public virtual SparkStatementOperation StartCreateSparkStatement(int sessionId, SparkStatementOptions sparkStatementOptions, CancellationToken cancellationToken = default) => StartCreateSparkStatementInternal(false, sessionId, sparkStatementOptions, cancellationToken).EnsureCompleted();
public virtual async Task <SparkStatementOperation> StartCreateSparkStatementAsync(int sessionId, SparkStatementOptions sparkStatementOptions, CancellationToken cancellationToken = default) => await StartCreateSparkStatementInternal(true, sessionId, sparkStatementOptions, cancellationToken).ConfigureAwait(false);
public async Task ExecuteSparkStatementSync() { #region Snippet:CreateSparkSessionClientAsync #if SNIPPET // Replace the strings below with the spark and endpoint information string sparkPoolName = "<my-spark-pool-name>"; string endpoint = "<my-endpoint-url>"; #else string sparkPoolName = TestEnvironment.SparkPoolName; string endpoint = TestEnvironment.EndpointUrl; #endif SparkSessionClient client = new SparkSessionClient(new Uri(endpoint), sparkPoolName, new DefaultAzureCredential()); #endregion #region Snippet:CreateSparkSessionAsync SparkSessionOptions request = new SparkSessionOptions(name: $"session-{Guid.NewGuid()}") { DriverMemory = "28g", DriverCores = 4, ExecutorMemory = "28g", ExecutorCores = 4, ExecutorCount = 2 }; SparkSessionOperation createSessionOperation = await client.StartCreateSparkSessionAsync(request); SparkSession sessionCreated = await createSessionOperation.WaitForCompletionAsync(); #endregion #region Snippet:GetSparkSessionAsync SparkSession session = await client.GetSparkSessionAsync(sessionCreated.Id); Debug.WriteLine($"Session is returned with name {session.Name} and state {session.State}"); #endregion #region Snippet:CreateSparkStatementAsync SparkStatementOptions sparkStatementRequest = new SparkStatementOptions { Kind = SparkStatementLanguageType.Spark, Code = @"print(""Hello world\n"")" }; SparkStatementOperation createStatementOperation = await client.StartCreateSparkStatementAsync(sessionCreated.Id, sparkStatementRequest); SparkStatement statementCreated = await createStatementOperation.WaitForCompletionAsync(); #endregion #region Snippet:GetSparkStatementAsync SparkStatement statement = await client.GetSparkStatementAsync(sessionCreated.Id, statementCreated.Id); Debug.WriteLine($"Statement is returned with id {statement.Id} and state {statement.State}"); #endregion #region Snippet:CancelSparkStatementAsync SparkStatementCancellationResult cancellationResult = client.CancelSparkStatement(sessionCreated.Id, statementCreated.Id); Debug.WriteLine($"Statement is cancelled with message {cancellationResult.Message}"); #endregion #region Snippet:CancelSparkSessionAsync Response operation = client.CancelSparkSession(sessionCreated.Id); #endregion }
public SparkStatement SubmitSparkSessionStatement(int sessionId, SparkStatementOptions sparkStatementOptions) { var statement = _sparkSessionClient.StartCreateSparkStatement(sessionId, sparkStatementOptions); return(statement.Poll().Value); }
public virtual async Task <Response <SparkStatement> > CreateSparkStatementAsync(int sessionId, SparkStatementOptions sparkStatementOptions, CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("SparkSessionClient.CreateSparkStatement"); scope.Start(); try { return(await RestClient.CreateSparkStatementAsync(sessionId, sparkStatementOptions, cancellationToken).ConfigureAwait(false)); } catch (Exception e) { scope.Failed(e); throw; } }