Azure Data Factory および Azure Synapse Analytics での Parquet 形式
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
Parquet ファイルの解析または Parquet 形式でのデータの書き込みを行う場合は、この記事に従ってください。
Parquet 形式は次のコネクタでサポートされています。
- Amazon S3
- Amazon S3 互換ストレージ
- Azure BLOB
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure Files
- ファイル システム
- FTP
- Google Cloud Storage
- HDFS
- HTTP
- Oracle Cloud Storage
- SFTP
使用可能なすべてのコネクタでサポートされている機能の一覧については、コネクタの概要に関するページをご覧ください。
セルフホステッド統合ランタイムの使用
重要
セルフホステッド統合ランタイム を利用するコピー (たとえば、オンプレミスとクラウド データ ストア間) では、Parquet ファイルをそのままコピーしない場合、IR マシン上に 64 ビット JRE 8 (Java Runtime Environment)、JDK 23 (Java Devleopment Kit) または OpenJDK をインストールする必要があります。 詳細については、次の段落をご確認ください。
Parquet ファイルのシリアル化/逆シリアル化を使用してセルフホステッド IR 上で実行されるコピーでは、サービスは最初に JRE のレジストリ (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome)
を調べ、見つからない場合は次に 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 再起動して、すぐに有効にします。
ヒント
セルフホステッド統合ランタイムを使用して、 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 の最小/最大ヒープ サイズを調整し、コピーを行えるようにしてから、パイプラインを再実行してください。
例: 変数 _JAVA_OPTIONS
を設定して、値 -Xms256m -Xmx16g
を指定します。 フラグ Xms
では、Java 仮想マシン (JVM) の初期メモリ割り当てプールを指定します。Xmx
では、最大メモリ割り当てプールを指定します。 これは、JVM 起動時のメモリ量が Xms
、使用可能なメモリ量が最大で Xmx
であることを意味します。 既定では、サービスにより最小で 64MB、最大で 1G が使用されます。
データセットのプロパティ
データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。 このセクションでは、Parquet データセットでサポートされるプロパティの一覧を示します。
プロパティ | 内容 | 必須 |
---|---|---|
type | データセットの type プロパティは Parquet に設定する必要があります。 | はい |
location | ファイルの場所の設定。 ファイル ベースの各コネクタには、固有の場所の種類と location でサポートされるプロパティがあります。 詳細については、コネクタの記事でデータセットのプロパティに関するセクションを参照してください。> |
はい |
compressionCodec | Parquet ファイルへの書き込み時に使用する圧縮コーデック。 データ ファクトリーは、Parquet ファイルから読み取るときに、ファイルのメタデータに基づいて圧縮コーデックを自動的に決定します。 サポートされている種類は、"なし"、"gzip"、"snappy" (既定値)、および "lzo" です。 Parquet ファイルの読み取りおよび書き込みの場合、コピー アクティビティでは現在、LZO がサポートされていないことにご注意ください。 |
いいえ |
注意
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"
}
}
}
コピー アクティビティのプロパティ
アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、Parquet のソースとシンクでサポートされるプロパティの一覧を示します。
ソースとしての Parquet
Copy アクティビティの *source* セクションでは、次のプロパティがサポートされます。
プロパティ | 内容 | 必須 |
---|---|---|
type | コピー アクティビティのソースの type プロパティは ParquetSource に設定する必要があります。 | はい |
storeSettings | データ ストアからデータを読み取る方法を指定するプロパティのグループ。 ファイル ベースの各コネクタには、storeSettings に、固有のサポートされる読み取り設定があります。 詳細については、コネクタの記事で Copy アクティビティのプロパティに関するセクションを参照してください。> |
いいえ |
シンクとしての Parquet
Copy アクティビティの *sink* セクションでは、次のプロパティがサポートされます。
プロパティ | 内容 | 必須 |
---|---|---|
type | コピー アクティビティ シンクの type プロパティには ParquetSink を設定する必要があります。 | はい |
formatSettings | プロパティのグループ。 後の Parquet の書き込み設定に関する表を参照してください。 | いいえ |
storeSettings | データ ストアにデータを書き込む方法を指定するプロパティのグループ。 ファイル ベースの各コネクタには、storeSettings に、固有のサポートされる書き込み設定があります。 詳細については、コネクタの記事で Copy アクティビティのプロパティに関するセクションを参照してください。> |
いいえ |
formatSettings
でサポートされている Parquet 書き込み設定:
プロパティ | 内容 | 必須 |
---|---|---|
type | formatSettings の type は、ParquetWriteSettings に設定する必要があります。 | Yes |
maxRowsPerFile | データをフォルダーに書き込むとき、複数のファイルに書き込み、ファイルあたりの最大行を指定することを選択できます。 | No |
fileNamePrefix | maxRowsPerFile が構成されている場合に使用されます。データを複数のファイルに書き込むとき、ファイル名のプレフィックスを指定します。結果的に <fileNamePrefix>_00000.<fileExtension> のパターンになります。 指定されていない場合、ファイル名プレフィックスは自動生成されます。 このプロパティは、ソースがファイルベース ストアかパーティション オプション対応データ ストアの場合、適用されません。 |
いいえ |
Mapping Data Flow のプロパティ
マッピング データ フローでは、Azure Blob Storage、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2 および SFTP のデータ ストアで Parquet 形式での読み取りと書き込みを実行でき、Amazon S3 で Parquet 形式を読み取ることができます。
ソースのプロパティ
次の表に、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 ソースの構成例です。
関連付けられているデータ フロー スクリプトは次のとおりです。
source(allowSchemaDrift: true,
validateSchema: false,
rowUrlColumn: 'fileName',
format: 'parquet') ~> ParquetSource
シンクのプロパティ
次の表に、Parquet シンクでサポートされるプロパティの一覧を示します。 これらのプロパティは、 [設定] タブで編集できます。
名前 | 説明 | 必須 | 使用できる値 | データ フロー スクリプトのプロパティ |
---|---|---|---|---|
Format | 形式は parquet である必要があります |
はい | parquet |
format |
Clear the folder (フォルダーのクリア) | 書き込みの前に宛先フォルダーがクリアされるかどうか | no | true または false |
truncate |
ファイル名のオプション | 書き込まれたデータの名前付け形式です。 既定では、part-#####-tid-<guid> という形式で、パーティションごとに 1 ファイルです |
いいえ | パターン: String パーティションあたり: String[] 列内のデータとして: String 1 つのファイルに出力する: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn partitionFileNames |
シンクの例
次の図は、マッピング データ フローにおける Parquet シンクの構成例です。
関連付けられているデータ フロー スクリプトは次のとおりです。
ParquetSource sink(
format: 'parquet',
filePattern:'output[n].parquet',
truncate: true,
allowSchemaDrift: true,
validateSchema: false,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> ParquetSink
データ型のサポート
Parquet 複合データ型 (MAP、LIST、STRUCT など) は、現在、コピー アクティビティではなくデータ フローでのみサポートされています。 データ フローで複合型を使用するには、データセットにファイル スキーマをインポートしないで、データセット内のスキーマを空白のままにしておきます。 次に、ソース変換で、プロジェクションをインポートします。