我在csv文件中有75个电子商务客户帐户数据的数据。
另外,我在另一个文件中有交易记录。此处,帐号是主键。每个帐户平均有500笔交易。
现在,我想处理这些数据并做出有关提供促销优惠的决定。由于数据量非常大,我决定选择SparkSQL。
但问题是,当我加入这两个表时,Cluster节点之间会有很多混乱。我想避免这种聚类。
如果我可以确保一个帐户'与事务数据在同一分区上的数据。我怎样才能做到这一点 ?
临时解决方案是,我可以在75个文件中划分7500万个帐户,每个帐户100万个帐户。并以类似的方式获得他们的交易。然后启动75个spark实例来处理它们。有没有其他方法可以做到这一点?答案 0 :(得分:1)
交易和帐户详细信息是不同的数据框,不能在同一个分区中。
但是,您可以使用hive bucketing来减少混乱。您可以保存文件桶,也可以保存accountId(也可以应用排序)。那样当你做一个加入火花时就不会洗牌了。
为了更好地了解使用Spark 2.0的hive bucketing,请检查this