注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

リポジトリ内のファイルを読み込む

リポジトリ内の他のファイルをトランスフォームのコンテキストに読み込むことができます。これは、ユーザーのトランスフォームコードが参照するパラメーターを設定するのに役立つかもしれません。

まず、Python リポジトリの setup.py を編集してください:

Copied!
1 2 3 4 5 6 7 setup( name=os.environ['PKG_NAME'], # PKG_NAMEという環境変数をパッケージの名前として設定します # ... package_data={ '': ['*.yaml', '*.csv'] # パッケージに含めるデータファイルを指定します。ここでは、yamlファイルとcsvファイルを含めます } )

これにより、Python は yaml と csv ファイルをパッケージにまとめるよう指示されます。 次に、Python トランスフォーム(例:read_yml.py、以下参照)の隣に設定ファイル(例:config.yaml、csv または txt も可)を配置してください。

Copied!
1 2 3 4 5 6 7 - name: tbl1 primaryKey: # 主キー - col1 - col2 update: # 更新 - column: col3 # カラム with: 'XXX' # 更新内容

ユーザーのトランスフォーム read_yml.py で以下のコードを使用して読み取ることができます:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from transforms.api import transform_df, Input, Output from pkg_resources import resource_stream import yaml import json # データフレームを変換する関数を定義 @transform_df( Output("/Demo/read_yml") ) def my_compute_function(ctx): # config.yamlファイルのストリームを取得 stream = resource_stream(__name__, "config.yaml") # YAMLファイルを読み込み docs = yaml.safe_load(stream) # 読み込んだYAMLデータをJSON形式に変換し、データフレームに格納して返す return ctx.spark_session.createDataFrame([{'result': json.dumps(docs)}])

したがって、プロジェクトの構造は次のようになります:

  • some_folder
    • config.yaml
    • read_yml.py

これにより、データセットには "result" という行を含む単一の行が出力され、その内容は次のとおりです:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 [ { "primaryKey": ["col1", "col2"], // 主キー: col1 と col2 "update": [ { "column": "col3", // 更新するカラム: col3 "with": "XXX" // 新しい値: XXX } ], "name": "tbl1" // テーブル名: tbl1 } ]