我需要有关使用Spark将维度信息与事务数据相关联的帮助。
我将数据存储在大约200列的拼花文件中。其中大约100个是尺寸' IDS。在总维度中,值在关系数据库中使用大约200GB,并且值随时间变化非常快。
如何在聚合期间将这些维度与事务数据相关联。聚合脚本是动态的,它们可以变化,例如可以使用20个维度或仅使用一个维度。我可以将所有维度值加载到hdfs,并进行连接。但是很多连接都很慢。
使用Hive我曾经使用自定义udfs,它从特定维度id的sql数据库维度值中检索。在udfs中使用了本地Guava缓存,因此如果值计数不超过缓存限制,则每个mapper / reducer offten仅用于生成一个请求。在Spark中使用这些udf而不进行任何修改会大大降低查询性能。我可以尝试用spark udfs重写它,但我不知道是否值得尝试?可能这种做法不适合火花。
使用spark执行此操作的常用方法是什么?