【发布时间】:2016-04-01 04:21:49
【问题描述】:
我正在尝试通过最小化 reduceByKey 的步骤数来优化 Zipkin Dependencies Spark job 以在更少的阶段运行。数据从下表中读取:
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 步骤得出RDD[((String, String), Long)]。如果有一种方法可以一次性读取整个分区,在一个 Spark 工作进程中,并在内存中进行处理,这将是一个巨大的速度提升,无需存储/流式传输来自当前的大量数据集第一阶段。
-- 编辑--
为了澄清,作业必须从表中读取所有数据,数十亿个分区。
【问题讨论】:
标签: apache-spark cassandra spark-cassandra-connector zipkin