注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
以下のエクスポート手順は高度なワークフローです。アクションメニューを使用して Foundry インターフェースからデータを直接ダウンロードできず、別の Foundry アプリケーションからデータをエクスポートすることもできない場合にのみ実行してください。
このガイドでは、Code Repositories または Pipeline Builder のトランスフォームを使用して、ダウンロード用の CSV を準備する方法を説明します。
ダウンロード用の CSV を準備する最初のステップは、データを絞り込んでクレンジングすることです。以下の手順を実行することを推奨します。
string に変更します。CSV 形式にはスキーマがないため(列のデータ型とラベルが強制されないため)、すべての列を文字列にキャストすることを推奨します。これは、タイムスタンプ列で特に重要です。以下の Python(PySpark)サンプルコードは、ニューヨーク市のタクシー運行データセットに上記の原則の一部を適用する例を示しています。
def prepare_input(my_input_df):
from pyspark.sql import functions as F
filter_column = "vendor_id"
filter_value = "CMT"
df_filtered = my_input_df.filter(filter_value == F.col(filter_column))
approx_number_of_rows = 1000
sample_percent = float(approx_number_of_rows) / df_filtered.count()
df_sampled = df_filtered.sample(False, sample_percent, seed=0)
important_columns = ["medallion", "tip_amount"]
return df_sampled.select([F.col(c).cast(F.StringType()).alias(c) for c in important_columns])
同様のロジックと Spark の概念を使用して、Pipeline Builder や、SQL、Java などのほかの Spark API でも準備処理を実装できます。
エクスポート用のデータの準備ができたら、ダウンロードする出力ファイルが1個になるように、データを単一のパーティションに再分割または結合する必要があります。次に、出力形式を CSV、または JSON、ORC、Parquet、Avro など、サポートされているほかの出力形式に設定します。以下の例では、Pipeline Builder、Python、SQL でデータを再分割し、出力形式を設定する方法を示します。
repartition(1) と coalesce(1) はどちらもデータを単一のパーティションに減らします。ただし、同じトランスフォーム内で絞り込み操作を行う場合は、coalesce の使用を避けてください。coalesce は上流のタスクをまとめるため、絞り込み操作が分散処理されなくなる可能性があります。
まず、データを再パーティション化データ加工を使用して、データを1個のパーティションに減らします。

次に、パイプラインの出力設定で、書き込み形式を CSV(またはサポートされているほかの形式)に設定します。

Copied!1 2 3 4 5 6 7from transforms.api import transform, Input, Output @transform( output=Output("/path/to/python_csv"), my_input=Input("/path/to/input") ) def my_compute_function(output, my_input): output.write_dataframe(my_input.dataframe().repartition(1), output_format="csv", options={"header": "true"})
CREATE TABLE `/path/to/sql_csv` USING CSV AS SELECT /*+ REPARTITION(1) */ * FROM `/path/to/input`
CSV 生成の追加オプションについては、Spark の公式ドキュメント ↗ を参照してください(Pipeline Builder では、これらのオプションの一部のみが利用可能です)。
上記の例では、出力データセットにダウンロード用の CSV ファイルがちょうど1個含まれるように、パーティションを1個に減らしています。その結果、データ全体が1個の Spark エグゼキューターのメモリーに収まる必要があるため、事前にデータを絞り込むか、サンプリングすることを推奨します。データの絞り込みやサンプリングができず、データが大きすぎて1個のエグゼキューターのメモリーに収まらない場合は、適切な Spark プロファイルを使用して、エグゼキューターのメモリーを増やせます。または、パーティション数に1以外の値を使用することもできます。repartition に1より大きい値を指定すると、1個のエグゼキューターのメモリーに保持する必要があるデータ量は減りますが、出力データセットの CSV ファイルが1個ではなく複数になり、それぞれを個別にダウンロードする必要があります。
データセットがビルドされたら、データセットページの詳細タブに移動します。CSV がダウンロード可能なファイルとして表示されるはずです。
