Sparkアプリケーションではコンマ区切りの文字列を受け取り、それを配列として分割して解析します。私はインデックスがよく私のメインの初めに決定されている、 すべてstatic final int
。コードの読みやすさは十分ですが、正確にはクリスタルではありませんが、しばらくするとすべてを把握するのが面倒です。擬似コード例:コードの別の部分でSparkStreamingの解析文字列と特定のクラスのオーバーヘッドの初期化
data = receivedString.split(",");
rdd.map({
someOperation = operation(data[CONSTANT_INDEX]);
someOtherOperation = otherOperation(data[INDEX],data[INDEX2];
data[RESULT_INDEX] = thirdOperation(data[THIRD_INDEX];});
、私は私のデータをホストするために、それを操作するために特定のクラスを使用してみました:はるかに簡単に私の操作を追跡します。例:
私は毎秒100本のラインを24時間毎に持っていますが、どちらのアプローチをとるべきですか?クラス作成のオーバーヘッドに私の環境をあまりにも重視しますか?
私はこれが「個人的な意見」の旗には入り込まないことを願っています。あなたは個人的にどのアプローチを使用していますか?
私は2つのPOCを作成します.1つは前者をテストし、もう1つは後者をテストします。次に、[YourKit](https://www.yourkit.com/)などのプロファイリングツールを使用して、クラス内の文字列をラップすることによって得られるパフォーマンスのオーバーヘッドを分析します。それから、どちらが私の要求を満たしているかを見ます。これらのクラスをインスタンス化することによるオーバーヘッドは、あなたがやっている他のいくつかの操作(大きな文字列の分割、ネットワーク呼び出しなど)と比較して無視できるほどです。時期尚早の最適化トラップには入らないでください。 –
@YuvalItzchakov正確に私の考え:-) – maasg