使用Spark + Cassandra执行任务,利用数据局部性



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

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

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

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

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

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

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

如果您想使用Spark(具有数据局部性),您必须编写Spark程序来做与exec相同的事情。Spark驱动程序(您可以使用DataStax Cassandra/Spark Connector)自动处理本地问题。

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

注:如果你在Spark中做一个shuffle操作(我不认为你在做),那么写一个Spark程序也不会对数据的局域性有帮助。

引用:Datastax员工关于Spark和Cassandra数据局部性的演示

最新更新