Zipkin Dependencies Spark ジョブを最適化して、実行するステップ数を最小限に抑えることで、より少ないステージで実行しようとしreduceByKey
ています。データは次の表から読み取られます。
CREATE TABLE IF NOT EXISTS zipkin.traces (
trace_id bigint,
ts timestamp,
span_name text,
span blob,
PRIMARY KEY (trace_id, ts, span_name)
)
そこでは、単一のパーティションtrace_id
に完全なトレースが含まれ、数行から数百行が含まれます。ただし、そのパーティション全体が Spark ジョブによって非常に単純な に変換され、RDD[((String, String), Long)]
エントリの数が数十億からわずか数百に減少します。
残念ながら、現在のコードは、すべての行を個別に読み取ることでそれを行っています。
sc.cassandraTable(keyspace, "traces")
reduceByKey
を考え出すために2 つのステップを使用しますRDD[((String, String), Long)]
。1 つの Spark ワーカー プロセスでパーティション全体を一度に読み取り、すべてをメモリ内で処理する方法があれば、速度が大幅に向上し、現在のサーバーから出てくる膨大なデータ セットを保存/ストリーミングする必要がなくなります。最初の段階。
- 編集 -
明確にするために、ジョブはテーブルから数十億のパーティションからすべてのデータを読み取る必要があります。