動作モードとハイレベル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()
}
}