Использование .NET для Apache Spark с помощью Azure Synapse Analytics
.NET для Apache Spark обеспечивает бесплатную открытую кроссплатформенную поддержку .NET для Spark.
.NET для Apache Spark предоставляет привязки .NET для Spark, которые позволяют использовать API-интерфейсы Spark на языках C# и F#. Кроме того, .NET для Apache Spark позволяет создавать и выполнять определяемые пользователем функции для Spark, написанные с помощью .NET. Интерфейсы API .NET для Spark предоставляют доступ ко всем аспектам Spark DataFrames для анализа данных, включая Spark SQL, Delta Lake и структурированную потоковую передачу.
Вы можете анализировать данные в .NET для Apache Spark с использованием определений пакетных заданий Spark или интерактивных записных книжек Azure Synapse Analytics. Из этой статьи вы узнаете, как работать с .NET для Apache Spark в Azure Synapse Analytics с помощью обоих методов.
Важно!
.NET для Apache Spark — это проект с открытым исходным кодом в .NET Foundation, который в настоящее время требует библиотеки .NET 3.1, которая достигла состояния вне поддержки. Мы хотели бы сообщить пользователям Azure Synapse Spark об удалении библиотеки .NET для Apache Spark в среде выполнения Azure Synapse для Apache Spark версии 3.3. Пользователи могут обратиться к политике поддержки .NET для получения дополнительных сведений об этом вопросе.
В результате пользователи больше не смогут использовать API Apache Spark через C# и F#, или выполнить код C# в записных книжках в Synapse или с помощью определений заданий Apache Spark в Synapse. Важно отметить, что это изменение влияет только на среду выполнения Azure Synapse для Apache Spark 3.3 и выше.
Мы будем продолжать поддерживать .NET для Apache Spark во всех предыдущих версиях среды выполнения Azure Synapse в соответствии с их этапами жизненного цикла. Однако у нас нет планов поддержки .NET для Apache Spark в Среде выполнения Azure Synapse для Apache Spark 3.3 и будущих версий. Рекомендуется перенести пользователей с существующими рабочими нагрузками, написанными на C# или F#, на Python или Scala. Пользователям рекомендуется учитывать эти сведения и планировать их соответствующим образом.
Отправка пакетных заданий с помощью определения задания Spark
Ознакомьтесь с учебником, который описывает применение Azure Synapse Analytics для создания определений заданий Apache Spark для пулов Synapse Spark. Если вы еще не создали пакет приложения для отправки в Azure Synapse, выполните приведенные ниже действия.
Настройте зависимости приложения
dotnet
для совместимости с Synapse Spark. Требуемая версия .NET Spark будет указана в интерфейсе Synapse Studio в конфигурации пула Apache Spark на панели элементов управления.Создайте проект как консольное приложение .NET, которое выводит исполняемый файл 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>
Выполните следующие команды, чтобы опубликовать приложение. Не забудьте заменить mySparkApp реальным значением пути к приложению.
cd mySparkApp dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.18.04-x64
Запакуйте содержимое папки публикации,
publish.zip
например, которая была создана в результате шага 1. Все сборки должны находиться в корне ZIP-файла. Не должны использоваться промежуточные уровни папки. Это означает, что при распаковкиpublish.zip
все сборки извлекаются в текущий рабочий каталог.В Windows:
С помощью Windows PowerShell или PowerShell 7 создайте ZIP-файл из содержимого каталога публикации.
Compress-Archive publish/* publish.zip -Update
В Linux:
Откройте оболочку Bash и перейдите с помощью команды cd в каталог bin со всеми опубликованными двоичными файлами, а затем выполните приведенную ниже команду.
zip -r publish.zip
.NET для Apache Spark в записных книжках Azure Synapse Analytics
Записные книжки предоставляют отличный способ создания прототипов конвейеров и сценариев .NET для Apache Spark. Вы можете быстро и эффективно начать работу с данными, анализировать их, фильтровать, отображать и визуализировать.
Специалисты по инжинирингу, обработке и анализу данных, бизнес-аналитики и специалисты по машинному обучению могут совместно работать над общим интерактивным документом. Вы немедленно получите результаты исследования данных и сможете визуализировать их прямо в той же записной книжке.
Использование .NET для записных книжек Apache Spark
При создании записной книжки вы можете выбрать ядро языка, на котором будете выражать бизнес-логику. Поддерживаются ядра для нескольких языков, включая C#.
Чтобы использовать .NET для Apache Spark в записной книжке Azure Synapse Analytics, выберите ядро .NET Spark (C#) и подключите записную книжку к существующему бессерверному пулу Apache Spark.
Записная книжка .NET Spark основана на интерактивном интерфейсе .NET и в стандартной конфигурации поддерживает все интерактивные возможности C#, в том числе .NET для Spark, а также имеет заранее определенную переменную spark
сеанса Spark.
Установка пакетов NuGet в записные книжки
Вы можете установить выбранные вами пакеты NuGet в записную книжку, используя магическую команду #r nuget
перед именем пакета NuGet. Пример приведен на следующей схеме.
Дополнительные сведения о работе с пакетами NuGet в записных книжках см. в интерактивной документации по .NET.
.NET для функций ядра C# в Apache Spark
При использовании .NET для Apache Spark в записной книжке Azure Synapse Analytics доступны следующие возможности.
- Декларативный HTML: создание выходных данных из ячеек с помощью синтаксиса HTML, таких как заголовки, маркированные списки и даже отображение изображений.
- Простые инструкции C# (назначения, печать в консоль, создание исключений и т. д.).
- Многострочные блоки кода C# (операторы условий, циклы foreach, определения классов и т. д.).
- Доступ к стандартной библиотеке C# (System, LINQ, Enumerables и т. д.).
- Поддержка функций языка C# 8.0.
- Заранее определенная переменная
spark
предоставляет доступ к сеансу Apache Spark. - Поддержка определяемых пользователем функций .NET, которые могут выполняться в Apache Spark. Рекомендуем прочитать статью Написание и вызов определяемых пользователем функций в .NET для интерактивных сред Apache Spark, чтобы узнать, как использовать определяемые пользователем функции в .NET для интерактивного взаимодействия в Apache Spark.
- Поддержка визуализации выходных данных из заданий Spark с использованием нескольких типов диаграмм (график, линейчатая диаграмма или гистограмма) и макетов (одиночный, наложенный и т. п.) благодаря поддержке библиотеки
XPlot.Plotly
. - Возможность включения пакетов NuGet в записную книжку C#.
Устранение неполадок
DotNetRunner: null
/ Futures timeout
в выполнении определения заданий Synapse Spark
Определения заданий Synapse Spark в пулах Spark с помощью Spark 2.4 требуют Microsoft.Spark
1.0.0. Очистите каталоги bin
и obj
, а затем опубликуйте проект с использованием версии 1.0.0.
OutOfMemoryError: пространство кучи java на org.apache.spark
Dotnet Spark 1.0.0 использует архитектуру отладки, отличную от 1.1.1 и более поздних версий. Для опубликованной версии необходимо использовать версию 1.0.0, а для локальной отладки — 1.1.1+.