Общие сведения о различиях между форматами данных U-SQL и Spark

Важно!

Azure Data Lake Analytics прекращена 29 февраля 2024 г. Дополнительные сведения см. в этом объявлении.

Для аналитики данных ваша организация может использовать Azure Synapse Analytics или Microsoft Fabric.

Если вы хотите использовать Azure Databricks или Azure HDInsight Spark, мы рекомендуем вам перенести данные из Azure Data Lake Storage 1-го поколения в Azure Data Lake Storage 2-го поколения.

Помимо перемещения файлов, вы также захотите сделать свои данные, хранящиеся в таблицах U-SQL, доступными для Spark.

Перемещение данных, хранящихся в файлах Azure Data Lake Storage 1-го поколения

Данные, хранящиеся в файлах, можно перемещать различными способами:

Мы рекомендуем вам ознакомиться со статьей Обновите свои решения для анализа больших данных с Azure Data Lake Storage 1-го поколения до Azure Data Lake Storage 2-го поколения

Переместите данные, хранящиеся в таблицах U-SQL

Таблицы U-SQL не распознаются Spark. Если у вас есть данные, хранящиеся в таблицах U-SQL, вы запустите задание U-SQL, которое извлекает данные таблицы и сохраняет их в формате, понятном Spark. Наиболее подходящий формат — создать набор файлов Parquet в соответствии с макетом папок хранилища метаданных Hive.

Вывод может быть получен в U-SQL с помощью встроенного средства вывода Parquet и использования динамического разбиения вывода с наборами файлов для создания папок разделов. Обработать больше файлов, чем когда-либо и использование Parquet — это пример того, как создавать такие расходные данные Spark.

После этого преобразования вы копируете данные, как описано в главе Перемещение данных, хранящихся в файлах Azure Data Lake Storage 1-го поколения.

Предупреждения

  • Семантика данных. При копировании файлов копирование происходит на байтовом уровне. Таким образом, те же данные должны отображаться в учетной записи Azure Data Lake Storage 2-го поколения. Обратите внимание, однако, что Spark может интерпретировать некоторые символы по-разному. Например, он может использовать другое значение по умолчанию для разделителя строк в файле CSV. Кроме того, если вы копируете типизированные данные (из таблиц), Parquet и Spark могут иметь разную точность и масштаб для некоторых типизированных значений (например, float) и могут по-разному обрабатывать нулевые значения. Например, U-SQL имеет семантику C# для нулевых значений, а Spark — трехзначную логику для нулевых значений.

  • Организация данных (секционирование). Таблицы U-SQL обеспечивают двухуровневое секционирование. Внешний уровень (PARTITIONED BY) определяется по значению и отображается в основном в схему разделения Hive/Spark с использованием иерархии папок. Необходимо убедиться, что значения NULL сопоставлены с правильной папкой. Внутренний уровень (DISTRIBUTED BY) в U-SQL предлагает четыре схемы распределения: циклический перебор, диапазон, хэш и прямой хэш. Таблицы Hive/Spark поддерживают только разделение значений или хэш-разделение с использованием хэш-функции, отличной от U-SQL. При выводе данных таблицы U-SQL вы, вероятно, сможете сопоставить только с секционированием значений для Spark и, возможно, потребуется выполнить дальнейшую настройку макета данных в зависимости от окончательных запросов Spark.

Дальнейшие действия