次の方法で共有


Azure Data FactoryとAzure Synapse AnalyticsにおけるParquet形式

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

Data Factory in Microsoft Fabric は、よりシンプルなアーキテクチャ、組み込みの AI、および新機能を備えた次世代のAzure Data Factoryです。 データ統合を初めて使用する場合は、Fabric Data Factory から始めます。 既存の ADF ワークロードをFabricにアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。

Parquet ファイルの解析または Parquet 形式でのデータの書き込みを行う場合は、この記事に従ってください。

Parquet 形式は次のコネクタでサポートされています。

使用可能なすべてのコネクタでサポートされている機能の一覧については、コネクタの概要に関するページをご覧ください。

セルフホステッド・インテグレーションランタイムの使用

重要

セルフホステッド Integration Runtimeによって強化されたコピーの場合。例: オンプレミスとクラウドのデータ ストア間で Parquet ファイルas-isをコピーしない場合は、IR マシンに 64 ビット JRE 8 (Java ランタイム環境)、JDK 23 (Java Development Kit)、または OpenJDK をインストールする必要があります。 詳細については、次の段落をご確認ください。

Parquet ファイルのシリアル化/逆シリアル化を使用してセルフホステッド IR で実行されているコピーの場合、サービスは最初にレジストリ (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) for JRE を確認し、見つからない場合は、次に OpenJDK のシステム変数 JAVA_HOME を確認することで、Java ランタイムを検索します。

  • JRE を使う場合: 64 ビット IR には 64 ビット JRE が必要です。 こちらから入手できます。
  • JDK を使用するには:64 ビット IR には 64 ビット JDK 23 が必要です。 こちらから入手できます。 JAVA_HOME システム変数を JDK 23 インストールのルート フォルダー (C:\Program Files\Java\jdk-23) に更新し、C:\Program Files\Java\jdk-23\bin フォルダーと C:\Program Files\Java\jdk-23\bin\server フォルダーの両方へのパスを Path システム変数に追加してください。
  • OpenJDK を使う場合: IR バージョン 3.13 以降でサポートされています。 jvm.dll を他のすべての必要な OpenJDK のアセンブリと共にセルフホステッド IR マシンにパッケージ化し、それに応じてシステム環境変数 JAVA_HOME を設定します。その後、セルフホステッド IR 再起動して、すぐに有効にします。 Microsoft Build of OpenJDKをダウンロードするには、Microsoft Build of OpenJDK<™/c0>を参照してください。

ヒント

セルフホステッド統合ランタイムを使用して、 Parquet 形式をコピー元またはコピー先にしてデータをコピーしたときに、[An error occurred when invoking java, message: java.lang.OutOfMemoryError:Java heap space (java の呼び出し中にエラーが発生しました。メッセージ: java.lang.OutOfMemoryError:Java heap space)] というエラーが発生する場合は、まず、セルフホステッド IR のホストであるマシン内に環境変数 _JAVA_OPTIONS を追加してください。次に、JVM の最小/最大ヒープ サイズを調整し、コピーを行えるようにしてから、パイプラインを再実行してください。

セルフホステッド IR 上での JVM ヒープ サイズの設定

例: 変数 _JAVA_OPTIONS を設定して、値 -Xms256m -Xmx16g を指定します。 フラグ Xms は、Java仮想マシン (JVM) の初期メモリ割り当てプールを指定します。一方、Xmx は最大メモリ割り当てプールを指定します。 これは、JVM 起動時のメモリ量が Xms、使用可能なメモリ量が最大で Xmx であることを意味します。 既定では、サービスにより最小で 64MB、最大で 1G が使用されます。

データセットのプロパティ

データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。 このセクションでは、Parquet データセットでサポートされるプロパティの一覧を示します。

プロパティ 説明 必須
データセットの type プロパティは Parquet に設定する必要があります。 はい
位置 ファイルの場所の設定。 ファイル ベースの各コネクタには、固有の場所の種類と location でサポートされるプロパティがあります。 >。 はい
compressionCodec Parquet ファイルへの書き込み時に使用する圧縮コーデック。 データ ファクトリーは、Parquet ファイルから読み取るときに、ファイルのメタデータに基づいて圧縮コーデックを自動的に決定します。
サポートされている種類は、"なし"、"gzip"、"snappy" (既定値)、および "lzo" です。 現在、Copy アクティビティは Parquet ファイルの読み取り/書き込み時に LZO をサポートしていません。
いいえ

Note

Parquet ファイルでは、列名に空白文字はサポートされません。

Azure Blob Storage上の Parquet データセットの例を次に示します。

{
    "name": "ParquetDataset",
    "properties": {
        "type": "Parquet",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "compressionCodec": "snappy"
        }
    }
}

Copy アクティビティ のプロパティ

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、Parquet のソースとシンクでサポートされるプロパティの一覧を示します。

ソースとしての Parquet

Copy アクティビティの *source* セクションでは、次のプロパティがサポートされます。

プロパティ 説明 必須
コピー アクティビティのソースの type プロパティは ParquetSource に設定する必要があります。 はい
storeSettings データ ストアからデータを読み取る方法を指定するプロパティのグループ。 ファイル ベースの各コネクタには、storeSettings に、固有のサポートされる読み取り設定があります。 コネクタに関する記事の詳細は、「Copy アクティビティ properties」セクションを参照してください>。 いいえ

シンクとしての Parquet

Copy アクティビティの *sink* セクションでは、次のプロパティがサポートされます。

プロパティ 説明 必須
コピー アクティビティ シンクの type プロパティには ParquetSink を設定する必要があります。 はい
formatSettings プロパティのグループ。 後の Parquet の書き込み設定に関する表を参照してください。 いいえ
storeSettings データ ストアにデータを書き込む方法を指定するプロパティのグループ。 ファイル ベースの各コネクタには、storeSettings に、固有のサポートされる書き込み設定があります。 詳細については、コネクタの記事で Copy アクティビティのプロパティに関するセクションを参照してください。> いいえ

でサポートされている formatSettings:

プロパティ 説明 必須
formatSettings の type は、ParquetWriteSettings に設定する必要があります。 はい
maxRowsPerFile データをフォルダーに書き込むとき、複数のファイルに書き込み、ファイルあたりの最大行を指定することを選択できます。 いいえ
fileNamePrefix maxRowsPerFile が構成されている場合に使用されます。
データを複数のファイルに書き込むとき、ファイル名のプレフィックスを指定します。結果的に <fileNamePrefix>_00000.<fileExtension> のパターンになります。 指定されていない場合、ファイル名プレフィックスは自動生成されます。 このプロパティは、ソースがファイルベース ストアかパーティション オプション対応データ ストアの場合、適用されません。
いいえ

Mapping Data Flow のプロパティ

マッピング データ フローでは、Azure Blob StorageAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2 および SFTP で、parquet 形式は Amazon S3 で読み取ることができます。

ソースのプロパティ

次の表に、Parquet ソースでサポートされるプロパティの一覧を示します。 これらのプロパティは、[ソース オプション] タブで編集できます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
Format [形式] は必ず parquet はい parquet format
Wild card paths (ワイルドカード パス) ワイルドカードのパスに一致するすべてのファイルが処理されます。 データセットで設定されているフォルダーとファイル パスはオーバーライドされます。 no String[] wildcardPaths
パーティションのルート パス パーティション分割されたファイル データについては、パーティション フォルダーを列として読み取るためにパーティションのルート パスを入力できます no String partitionRootPath
ファイルの一覧 処理するファイルを一覧表示しているテキスト ファイルをソースが指しているかどうか no true または false fileList
ファイル名を格納する列 ソース ファイル名とパスを使用して新しい列を作成します no String rowUrlColumn
完了後 処理後にファイルを削除または移動します。 ファイル パスはコンテナー ルートから始まります no 削除: true または false
移動: [<from>, <to>]
purgeFiles
moveFiles
最終更新日時でフィルター処理 最後に変更された日時に基づいてファイルをフィルター処理する場合に選択 no Timestamp modifiedAfter
modifiedBefore
[Allow no files found]\(ファイルの未検出を許可\) true の場合、ファイルが見つからない場合でもエラーはスローされない no true または false ignoreNoFilesFound

ソースの例

次の図は、マッピング データ フローにおける Parquet ソースの構成例です。

Parquet ソース

関連付けられているデータ フロー スクリプトは次のとおりです。

source(allowSchemaDrift: true,
    validateSchema: false,
    rowUrlColumn: 'fileName',
    format: 'parquet') ~> ParquetSource

シンクのプロパティ

次の表に、Parquet シンクでサポートされるプロパティの一覧を示します。 これらのプロパティは、[設定] タブで編集できます。

名前 説明 必須 使用できる値 データ フロー スクリプトのプロパティ
Format [形式] は必ず parquet はい parquet format
Clear the folder (フォルダーのクリア) 書き込みの前に宛先フォルダーがクリアされるかどうか no true または false 切り詰める
ファイル名のオプション 書き込まれたデータの名前付け形式です。 既定では、part-#####-tid-<guid> という形式で、パーティションごとに 1 ファイルです no パターン: String
パーティションあたり: String[]
列内のデータとして: String
1 つのファイルに出力する: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames

シンクの例

次の図は、マッピング データ フローにおける Parquet シンクの構成例です。

Parquet シンク

関連付けられているデータ フロー スクリプトは次のとおりです。

ParquetSource sink(
    format: 'parquet',
    filePattern:'output[n].parquet',
    truncate: true,
    allowSchemaDrift: true,
    validateSchema: false,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> ParquetSink

Parquet のデータ型マッピング

Parquet 形式でソース コネクタからデータを読み取る場合、Parquet データ型からサービスによって内部的に使われる中間データ型への次のマッピングが使われます。

Parquet 型 中間サービス データ型
BOOLEAN ブール値
INT_8 SByte
INT_16 Int16
INT_32 Int32
INT_64 Int64
INT96 DateTime
UINT_8 Byte
UINT_16 UInt16
UINT_32 UInt32
UINT_64 UInt64
DECIMAL 10 進法
FLOAT シングル
DOUBLE Double
DATE 日付
TIME_MILLIS TimeSpan
TIME_MICROS Int64
TIMESTAMP_MILLIS DateTime
TIMESTAMP_MICROS Int64
STRING String
UTF8 String
ENUM バイト配列
UUID(ユニバーサリー・ユニーク・アイデンティファイア) バイト配列
JSON バイト配列
BSON バイト配列
BINARY バイト配列
FIXED_LEN_BYTE_ARRAY バイト配列

Parquet 形式でシンク コネクタにデータを書き込む場合、サービスによって内部的に使われる中間データ型から Parquet データ型への次のマッピングが使われます。

中間サービス データ型 Parquet 型
ブール値 BOOLEAN
SByte INT_8
Int16 INT_32
Int32 INT_32
Int64 INT_64
Byte INT_32
UInt16 INT_32
UInt32 INT_64
UInt64 DECIMAL
10 進法 DECIMAL
シングル FLOAT
Double DOUBLE
日付 DATE
DateTime INT96
DateTimeOffset INT96
TimeSpan INT96
String UTF8
GUID UTF8
バイト配列 BINARY

コピー アクティビティでソースのスキーマとデータ型がシンクにマッピングされるしくみについては、スキーマとデータ型のマッピングに関する記事を参照してください。

Parquet 複合データ型 (MAP、LIST、STRUCT など) は、現在、コピー アクティビティではなくデータ フローでのみサポートされています。 データ フローで複合型を使用するには、データセットにファイル スキーマをインポートしないで、データセット内のスキーマを空白のままにしておきます。 次に、ソース変換で、プロジェクションをインポートします。