Compartir vía


Uso de .NET para Apache Spark con Azure Synapse Analytics

.NET para Apache Spark proporciona compatibilidad gratuita, de código abierto y multiplataforma con .NET para Spark.

Proporciona enlaces de .NET para Spark, lo que permite acceder a las API de Spark a través de C# y F#. Con .NET para Apache Spark, también puede escribir y ejecutar funciones definidas por el usuario para Spark escritas en .NET. Las API de .NET para Spark permiten acceder a todos los aspectos de los dataframes de Spark que le ayudan a analizar los datos, incluidos Spark SQL, Delta Lake y Structured Streaming.

Puede analizar datos con .NET para Apache Spark mediante definiciones de trabajos por lotes de Spark o con cuadernos interactivos de Azure Synapse Analytics. En este artículo, aprenderá a usar .NET para Apache Spark con Azure Synapse mediante ambas técnicas.

Importante

.NET para Apache Spark es un proyecto de código abierto en .NET Foundation que actualmente requiere la biblioteca de .NET 3.1, que ha alcanzado el estado fuera de soporte técnico. Nos gustaría informar a los usuarios de Azure Synapse Spark de la eliminación de la biblioteca .NET para Apache Spark en Azure Synapse Runtime para Apache Spark versión 3.3. Los usuarios pueden consultar la directiva de soporte técnico de .NET para obtener más detalles sobre este asunto.

Como resultado, ya no será posible que los usuarios usen las API de Apache Spark a través de C# y F#, o bien ejecuten código de C# en cuadernos dentro de Synapse o a través de definiciones de trabajos de Apache Spark en Synapse. Es importante tener en cuenta que este cambio afecta solo a Azure Synapse Runtime para Apache Spark 3.3 y versiones posteriores.

Seguiremos admitiendo .NET para Apache Spark en todas las versiones anteriores de Azure Synapse Runtime según sus fases de ciclo de vida. Sin embargo, no tenemos planes para admitir .NET para Apache Spark en Azure Synapse Runtime para Apache Spark 3.3 y versiones futuras. Se recomienda que los usuarios con cargas de trabajo existentes escritas en C# o F# migren a Python o Scala. Se recomienda a los usuarios tomar nota de esta información y planear en consecuencia.

Envío de trabajos por lotes mediante la definición de trabajo de Spark

Visite el tutorial para aprender a usar Azure Synapse Analytics para crear definiciones de trabajos de Apache Spark para grupos de Synapse Spark. Si no ha empaquetado la aplicación para enviar a Azure Synapse, complete los pasos siguientes.

  1. Configure las dotnet dependencias de la aplicación para la compatibilidad con Synapse Spark. La versión de .NET Spark necesaria se anotará en la interfaz de Synapse Studio en la configuración del grupo de Apache Spark, en el cuadro de herramientas Administrar.

    Captura de pantalla que muestra las propiedades, incluida la versión de Spark de .NET.

    Cree el proyecto como una aplicación de consola de .NET que genere un ejecutable de Ubuntu x86.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.Spark" Version="2.1.0" />
      </ItemGroup>
    
    </Project>
    
  2. Ejecute los siguientes comandos para publicar la aplicación. Asegúrese de reemplazar mySparkApp por la ruta de acceso a la aplicación.

    cd mySparkApp
    dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.18.04-x64
    
  3. Comprima el contenido de la carpeta publish, publish.zip por ejemplo, que se creó como resultado del paso 1. Todos los ensamblados deben estar en la raíz del archivo ZIP y no debe haber ninguna capa de carpeta intermedia. Esto significa que, al descomprimir publish.zip, todos los elementos ensamblados se extraen en el directorio de trabajo actual.

    En Windows:

    Con Windows PowerShell o PowerShell 7, cree un .zip a partir del contenido del directorio de publicación.

    Compress-Archive publish/* publish.zip -Update
    

    En Linux:

    Abra un shell de bash, cambie al directorio bin con todos los archivos binarios publicados y ejecute el siguiente comando.

    zip -r publish.zip
    

.NET para Apache Spark en los cuadernos de Azure Synapse Analytics

Los cuadernos son una excelente opción para crear prototipos de canalizaciones y escenarios de .NET para Apache Spark. Puede empezar a trabajar con, comprender, filtrar, mostrar y visualizar los datos de forma rápida y eficaz.

Los ingenieros de datos, los científicos de datos, los analistas de negocios y los ingenieros de aprendizaje automático pueden colaborar en un documento compartido e interactivo. Verá resultados inmediatos de la exploración de datos y puede visualizar los datos en el mismo cuaderno.

Cómo utilizar .NET en los cuadernos de Apache Spark

Al crear un cuaderno, elija un kernel de lenguaje que desee expresar la lógica de negocios. La compatibilidad con kernel está disponible para varios lenguajes, incluido C#.

Para usar .NET para Apache Spark en el cuaderno de Azure Synapse Analytics, seleccione .NET Spark (C#) como kernel y asocie el cuaderno a un grupo de Apache Spark sin servidor existente.

El cuaderno de Spark de .NET se basa en las experiencias interactivas de .NET y proporciona experiencias interactivas de C# con la capacidad de usar .NET para Spark de fábrica con la variable spark de sesión de Spark ya predefinida.

Instalación de paquetes NuGet en cuadernos

Puede instalar paquetes NuGet que elija en el cuaderno mediante el comando mágico #r nuget antes del nombre del paquete NuGet. En el diagrama siguiente se muestra un ejemplo:

Captura de pantalla que muestra el uso de #r para instalar un paquete NuGet en un cuaderno de Spark .NET

Para obtener más información sobre cómo trabajar con paquetes NuGet en cuadernos, consulte la documentación interactiva de .NET.

Características del kernel de .NET para Apache Spark en C#

Las siguientes características están disponibles cuando se usa .NET para Apache Spark en el cuaderno de Azure Synapse Analytics:

  • HTML declarativa: Genere resultados a partir de las celdas con sintaxis HTML, como encabezados, listas con viñetas e, incluso, mostrar imágenes.
  • Instrucciones simples de C# (como asignaciones, impresión en la consola, generación de excepciones, etc.).
  • Bloques de código de C# de varias líneas (como instrucciones if, bucles foreach, definiciones de clase, etc.).
  • Acceso a la biblioteca estándar de C# (como System, LINQ, Enumerables, etc.).
  • Compatibilidad con las características del lenguaje C# 8.0.
  • spark como una variable predefinida para proporcionarle acceso a la sesión de Apache Spark.
  • Compatibilidad con la definición de funciones definidas por el usuario de .NET que se pueden ejecutar en Apache Spark. Le recomendamos leer Escritura y llamada a UDF en entornos interactivos de .NET para Apache Spark para aprender a usar UDF en experiencias interactivas de .NET para Apache Spark.
  • Compatibilidad para visualizar la salida de los trabajos de Spark con distintos gráficos (como líneas, barras o histogramas), y diseños (como único, superpuesto, etc.) mediante la biblioteca de XPlot.Plotly.
  • Capacidad de incluir paquetes NuGet en el cuaderno de C#.

Solución de problemas

OutOfMemoryError: espacio de montón de Java en org.apache.spark

Dotnet Spark 1.0.0 usa una arquitectura de depuración diferente a la 1.1.1+. Tendrá que usar 1.0.0 para la versión publicada y 1.1.1+ para la depuración local.

Pasos siguientes