Поделиться через


Общие сведения о различиях между форматами данных 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) и может обрабатывать значения NULL по-разному. Например, U-SQL имеет семантику C# для значений NULL, а Spark имеет трехзначную логику для значений NULL.

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

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