注: 以下の翻訳の正確性は検証されていません。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)}])
したがって、プロジェクトの構造は次のようになります:
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 } ]