Descripción de las diferencias entre los formatos de datos de Spark y U-SQL

Importante

Azure Data Lake Analytics retiró el 29 de febrero de 2024. Más información sobre este anuncio.

Para el análisis de datos, su organización puede usar Azure Synapse Analytics o Microsoft Fabric.

Si quiere usar Azure Databricks o Azure HDInsight Spark, le recomendamos migrar los datos desde Azure Data Lake Storage Gen1 a Azure Data Lake Storage Gen2.

Además de migrar los archivos, también querrá que Spark pueda acceder a sus datos, que están almacenados en tablas de U-SQL.

Migración de los datos almacenados en archivos de Azure Data Lake Storage Gen1

Los datos almacenados en archivos de pueden migrar de varias maneras:

Le recomendamos revisar el artículo Actualización de las soluciones de análisis de macrodatos de Azure Data Lake Storage Gen1 a Azure Data Lake Storage Gen2.

Migración de los datos almacenados en tablas de U-SQL

Spark no entiende las tablas de U-SQL. Si tiene datos almacenados en tablas de U-SQL, ejecutará un trabajo de U-SQL que extrae los datos de la tabla y los guarda en un formato comprensible para Spark. El formato más adecuado es crear un conjunto de archivos Parquet según el diseño de la carpeta del metastore de Hive.

La salida se puede lograr en U-SQL con el outputter de Parquet integrado y el uso de la creación de particiones de salida dinámica con conjuntos de archivos para crear las carpetas de particiones. El artículo Procesar más archivos que nunca y usar Parquet proporciona un ejemplo de cómo crear estos datos consumibles de Spark.

Después de esta transformación, puede copiar los datos como se describe en el capítulo Migración de los datos almacenados en archivos de Azure Data Lake Storage Gen1.

Advertencias

  • Semántica de los datos Al copiar los archivos, la copia se producirá en el nivel de bytes. Por lo tanto, los mismos datos deberían aparecer en la cuenta de Azure Data Lake Storage Gen2. Sin embargo, tenga en cuenta que Spark puede interpretar algunos caracteres de manera diferente. Por ejemplo, puede usar un valor predeterminado distinto para un delimitador de fila en un archivo .csv. Además, si va a copiar datos con tipo (desde tablas), es posible que Parquet y Spark tengan una precisión y una escala diferentes para algunos de los valores con tipo (por ejemplo, un tipo float) y pueden tratar distinto los valores NULL. Por ejemplo, U-SQL tiene la semántica de C# para los valores NULL, mientras que Spark tiene una lógica de tres valores para los valores NULL.

  • Las tablas de U-SQL de una organización de datos (particionamiento) proporcionan una partición de dos niveles. El nivel externo (PARTITIONED BY) es por valor y se asigna principalmente al esquema de partición de Hive/Spark mediante jerarquías de carpetas. Deberá asegurarse de que los valores NULL se asignan a la carpeta correcta. El nivel interno (DISTRIBUTED BY) de U-SQL ofrece cuatro esquemas de distribución: round robin, range, hash y hash directo. Las tablas de Hive/Spark solo admiten particiones de valores o creación de particiones por hash, con una función hash distinta de U-SQL. Al generar los datos de la tabla de U-SQL, probablemente solo podrá asignarlos a la creación de particiones de valores para Spark y es posible que tenga que realizar un ajuste adicional del diseño de datos en función de las consultas de Spark finales.

Pasos siguientes