Aerospikeにフィルタとマップを含むudfストリームがあります。方法:マップなしでaerospike udfフィルターを作成するか、マップに完全なレコードを返します
私が見たすべての例によると、私はレコードからフィールドを選び、フィルタリングされ選択されたフィールドを持つ新しいマップを返すことができます。しかし、私はそれをしたくありません。私はどのようなストリームでも、どんなコラム/ビンでも、フィルタを適用してフルレコードを返すことを望みます。 1つのアプローチは、stream:fiter(my_filter)のようなものを使用し、マップを使用しないことです。直感的に(少なくとも私にとっては)これはストリームをフィルタリングして中継するだけです。これは、私の欲求不満に、動作しないようです。私が試した次のことは、マップを使用することですが、単純に完全なレコードを中継します。これはどちらもうまくいきません。両方のケースで、私はそれが私の結果として空リストを取得しないと言うとき。
これがどのように機能するのかを親切に説明できますか?それは私を絶対にナッツを運転している。 これは、世界で最も基本的なものの1つで、udfsと関係があります。私は、udfsでもっと複雑なことをたくさんやったことを指摘しなければならないが、何らかの理由でこれが私にとって問題である。
ご回答いただきありがとうございます。はい、私は鍵とダイジェストを返すことができると認識しています。レコードダイジェストはRIPEMD160などで、さまざまなドキュメントやホワイトペーパーを読むことができます。私の本当の懸念は、効率についてです。私はすべてのデータを1回のパスで返したいので、そこにデータを置いてキーを返してからデータに戻るのが奇妙なようです。また、選択した列をUDFに渡して繰り返しマップを作成することもできますが、やはり効率が悪いようです。 OR、私はこれを試していないが、レコードがビン名を持っているようだ... – ismisesisko
レコードのストリームからフィルタリングされたレコードのセットを返すだけのユースケースは何ですか、つまり、クライアントノードで何らかの計算を行いますか? Aerospikeは、1)サーバー上のレコードを変更するためのudfsを記録するか、または2)読み取り専用モードでレコードセットに作用し、それらのレコードに情報を集約させるストリームudfsを提供します。 stream udfsを使用すると、クラスター上の各ノードを使用してmap-reduceタイプの計算機能を使用して、レコードセットの計算を行い、クライアントノードでの最終的な削減を行います。 – pgupta