2016-09-07 28 views
0

我有一个exec,它接受一个cassandra主键作为输入。使用Spark + Cassandra利用数据局部性执行作业

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

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

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

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

注:在EXEC我被执行的查询访问数据:

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

回答

0

如果你想使用星火(有数据局部性),你必须写星火计划做exec正在做同样的事情。 Spark驱动程序(您可以使用DataStax Cassandra/Spark连接器)自动处理局部性问题。

如果您想在不编写Spark程序的情况下利用数据局部性,那么将会很困难,并且我不知道您是否需要Spark,在这种情况下。

P.S.如果你在Spark中做一个shuffle操作(我认为你没有这样做),那么写一个Spark程序也不会对数据局部性有所帮助。

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