動作モードとハイレベルAPI
NetezzaR Libraryのパッケージ関数など、クライアント側のコードで通常使用される操作モードについて学びます。
NetezzaR ライブラリパッケージ関数などのクライアント側のコードでは、次の動作モードが一般的に使用されます:
- 稼働
- ユーザーが提供した機能をそのまま実行する。
- 適用
- 入力テーブルの各行に対してユーザー提供関数を呼び出し、入力データストリームに適用する。
- タッピング
data.framesとして渡された行のグループに対して、ユーザー提供の関数を適用する。- インストール
- ユーザーが提供する R 拡張パッケージをホストと SPU にインストールする。
- グループ化
- ユーザ指定の GROUP BY 節に基づいて作成された複数のデータ・サブセットに、ユーザ提供の関数を適用します。
これらのモードはそれぞれ、モード識別子、関数本体、追加引数のような入力オブジェクトを、厳密に指定されたフォーマットでユーザーが提供することを前提としている。
注:Rに関するモードという用語の意味は文脈によって異なる。 ここでは、ユーザーから提供された多くのパラメータを受け付ける高レベルのサーバーサイドR関数、つまりオプションの引数を持つ関数を指す。 これらの関数は、データ処理に直接関係しないフロー部分、例えば、入力行を構築し、それをユーザーが提供する関数に渡し、関数の結果を出力するループを制御する。 runを除くすべてのモードは、低レベルAPIの一部をユーザーから隠す。
次の例は「
applyモードを示す:# we assume that 'fun' is the user-provided function
while (getNext()) {
row <- list()
for (i in seq(inputColumnCount()))
row[[i]] <- getInputColumn(i-1)
ret <- do.call(fun, c(list(x=row), args))
if (length(ret)) {
for (i in 1:length(ret))
setOutput(i-1, ret[[i]])
outputResult()
}
}