使用Apache spark或任何大数据工具基于主键对多个表进行分区

时间:2017-09-28 09:03:38

标签: apache-spark bigdata apache-spark-sql spark-streaming data-analysis

我在csv文件中有75个电子商务客户帐户数据的数据。

另外,我在另一个文件中有交易记录。此处,帐号是主键。每个帐户平均有500笔交易。

现在,我想处理这些数据并做出有关提供促销优惠的决定。由于数据量非常大,我决定选择SparkSQL。

但问题是,当我加入这两个表时,Cluster节点之间会有很多混乱。我想避免这种聚类。

如果我可以确保一个帐户'与事务数据在同一分区上的数据。我怎样才能做到这一点 ?

临时解决方案是,我可以在75个文件中划分7500万个帐户,每个帐户100万个帐户。并以类似的方式获得他们的交易。然后启动75个spark实例来处理它们。有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

交易和帐户详细信息是不同的数据框,不能在同一个分区中。

但是,您可以使用hive bucketing来减少混乱。您可以保存文件桶,也可以保存accountId(也可以应用排序)。那样当你做一个加入火花时就不会洗牌了。

为了更好地了解使用Spark 2.0的hive bucketing,请检查this