次の方法で共有


U-SQL と Spark のデータ形式の違いを理解する

重要

Azure Data Lake Analytics は、2024 年 2 月 29 日に廃止されました。 についてさらに知りたい場合は、このお知らせをご覧ください。

データ分析の場合、組織は Azure Synapse Analytics 使用することも、Microsoft Fabric することもできます。

Azure Databricks または Azure HDInsight Spark を使用する場合は、Azure Data Lake Storage Gen1 から Azure Data Lake Storage Gen2 にデータを移行することをお勧めします。

ファイルを移動するだけでなく、データを U-SQL テーブルに格納し、Spark からアクセスできるようにする必要もあります。

Azure Data Lake Storage Gen1 ファイルに格納されているデータを移動する

ファイルに格納されているデータは、さまざまな方法で移動できます。

ビッグ データ分析ソリューションを Azure Data Lake Storage Gen1 から Azure Data Lake Storage Gen2 にアップグレードする 記事を確認することをお勧めします

U-SQL テーブルに格納されているデータを移動する

U-SQL テーブルは Spark では認識されません。 U-SQL テーブルにデータが格納されている場合は、テーブル データを抽出し、Spark が認識する形式で保存する U-SQL ジョブを実行します。 最も適切な形式は、Hive メタストアのフォルダー レイアウトに従って一連の Parquet ファイルを作成することです。

出力は、組み込みの Parquet 出力ツールを使用し、ファイル セットを使用した動的出力パーティション分割を使用してパーティション フォルダーを作成することで、U-SQL で実現できます。 これまで以上に多くのファイルを処理し、Parquet を使用して、このような Spark の消耗品データを作成する方法の例を示します。

この変換の後、「Azure Data Lake Storage Gen1 ファイルに格納されているデータを移動する」の章で説明されているように、データをコピーします。

注意事項

  • データ セマンティクス ファイルをコピーする場合、コピーはバイト レベルで行われます。 そのため、同じデータが azure Data Lake Storage Gen2 アカウント に表示されます。 ただし、Spark では一部の文字の解釈が異なる場合があることに注意してください。 たとえば、CSV ファイル内の行区切り記号に別の既定値を使用する場合があります。 さらに、型指定されたデータを (テーブルから) コピーする場合、Parquet と Spark の一部の型指定された値 (float など) の精度と小数点以下桁数が異なる場合があり、null 値の扱いが異なる場合があります。 たとえば、U-SQL には NULL 値の C# セマンティクスがあり、Spark には null 値の 3 つの値を持つロジックがあります。

  • データ編成 (パーティション分割) U-SQL テーブルでは、2 つのレベルのパーティション分割が提供されます。 外部レベル (PARTITIONED BY) は値によって、主にフォルダー階層を使用して Hive/Spark パーティション分割スキームにマップされます。 null 値が適切なフォルダーにマップされていることを確認する必要があります。 U-SQL の内部レベル (DISTRIBUTED BY) には、ラウンド ロビン、範囲、ハッシュ、および直接ハッシュの 4 つの分散スキームが用意されています。 Hive/Spark テーブルでは、U-SQL とは異なるハッシュ関数を使用した値のパーティション分割またはハッシュ パーティション分割のみがサポートされます。 U-SQL テーブル データを出力する場合、Spark の値のパーティション分割にのみマップできることがあり、最終的な Spark クエリに応じてデータ レイアウトをさらに調整する必要がある場合があります。

次のステップ