Compartilhar via


Entender as diferenças entre os formatos de dados U-SQL e Spark

Importante

O Azure Data Lake Analytics se aposentou em 29 de fevereiro de 2024. Saiba mais com este comunicado.

Para análise de dados, sua organização pode usar o Azure Synapse Analytics ou o Microsoft Fabric.

Se você quiser usar o Azure Databricks ou o Azure HDInsight Spark, recomendamos migrar seus dados do Azure Data Lake Storage Gen1 para o Azure Data Lake Storage Gen2.

Além de mover seus arquivos, você também desejará tornar seus dados, armazenados em tabelas U-SQL, acessíveis ao Spark.

Mover dados armazenados em arquivos do Azure Data Lake Storage Gen1

Os dados armazenados em arquivos podem ser movidos de várias maneiras:

Recomendamos que você examine o artigo Atualizar suas soluções de análise de Big Data do Azure Data Lake Storage Gen1 para o Azure Data Lake Storage Gen2

Mover dados armazenados em tabelas U-SQL

As tabelas U-SQL não são compreendidas pelo Spark. Se você tiver dados armazenados em tabelas U-SQL, executará um trabalho U-SQL que extrai os dados da tabela e os salvará em um formato que o Spark entende. O formato mais apropriado é criar um conjunto de arquivos Parquet, seguindo o layout de pastas do metastore do Hive.

A saída pode ser obtida no U-SQL com o outputter Parquet integrado e usando o particionamento dinâmico de saída com conjuntos de arquivos para criar as pastas de partição. Processar mais arquivos do que nunca e usar o Parquet exemplifica como criar esses dados consumíveis pelo Spark.

Após essa transformação, você copia os dados conforme descrito no capítulo Mover dados armazenados nos arquivos do Azure Data Lake Storage Gen1.

Advertências

  • Semântica de dados Ao copiar arquivos, a cópia ocorrerá no nível de byte. Portanto, os mesmos dados devem aparecer na conta do Azure Data Lake Storage Gen2 . No entanto, observe que o Spark pode interpretar alguns caracteres de forma diferente. Por exemplo, ele pode usar um padrão diferente para um delimitador de linha em um arquivo CSV. Além disso, se você estiver copiando dados tipados (de tabelas), Parquet e Spark poderão ter precisão e escala diferentes para alguns dos valores tipados (por exemplo, um float) e podem tratar valores nulos de forma diferente. Por exemplo, u-SQL tem a semântica C# para valores nulos, enquanto Spark tem uma lógica de três valores para valores nulos.

  • As tabelas U-SQL da organização de dados (particionamento) fornecem particionamento de dois níveis. O nível externo (PARTITIONED BY) é baseado em valor e mapeia principalmente o esquema de particionamento do Hive/Spark usando hierarquias de pastas. Você precisará garantir que os valores nulos sejam mapeados para a pasta certa. O nível interno (DISTRIBUTED BY) no U-SQL oferece quatro esquemas de distribuição: circular, intervalo, hash e hash direto. As tabelas do Hive/Spark dão suporte apenas ao particionamento de valor ou ao particionamento de hash, usando uma função de hash diferente do U-SQL. Ao gerar seus dados da tabela U-SQL, você provavelmente só poderá mapear para o particionamento de valores do Spark e talvez precise fazer ajustes adicionais no layout dos dados dependendo das suas consultas finais no Spark.

Próximas etapas