使用Spark + Cassandra利用数据局部性执行作业

时间:2016-09-07 09:05:46

标签: python apache-spark cassandra

我有一个exec,它接受一个cassandra主键作为输入。

Cassandra Row: (id, date), clustering_key, data
./exec id date

每个exec都可以访问给定主键的多个行。在对数据执行执行后,它将结果存储在DB中。

我有多个这样的高手,我想在存储数据的节点上运行exec。如何使用spark实现这一目标?

另外,我如何接收运行exec的节点ip [用于验证目的]。

注意:在exec中我通过执行查询来访问数据:

select data from table where id = t_id and date = t_date and clustering_key = t_clustering_key

1 个答案:

答案 0 :(得分:0)

如果你想使用Spark(带数据局部性),你必须编写Spark程序来执行exec正在做的事情。 Spark驱动程序(您可以使用DataStax Cassandra / Spark Connector)自动处理地点问题。

如果你想在没有编写Spark程序的情况下利用数据位置,那么它将变得困难,在这种情况下,我根本不知道你是否需要Spark。

P.S。如果你在Spark中进行一次shuffle操作(我不认为你在做),那么编写一个Spark程序对数据局部性也无济于事。

参考文献: Presentation by Datastax employee about Spark and Cassandra data locality