【发布时间】:2015-03-30 10:26:09
【问题描述】:
我有一个 csv 文件列表,每个文件都有一堆类别名称作为标题列。每行都是一个具有布尔值 (0, 1) 的用户列表,无论他们是否属于该类别。每个 csv 文件没有相同的标题类别集。
我想在所有具有以下输出的文件中创建一个复合 csv:
- 标题是所有标题的联合
- 每一行都是一个唯一的用户,具有对应于类别列的布尔值
我想解决这个问题的方法是为每个带有“1”的单元格创建一个 user_id 和一个唯一 category_id 的元组。然后为每个用户减少所有这些列以获得最终输出。
如何开始创建元组?我可以对所有类别进行全局查找吗?
示例数据:
File 1
user_id,cat1,cat2,cat3
21321,,,1,
21322,1,1,1,
21323,1,,,
文件 2
user_id,cat4,cat5
21321,1,,,
21323,,1,,
输出
user_id,cat1,cat2,cat3,cat4,cat5
21321,,1,1,,,
21322,1,1,1,,,
21323,1,1,,,,
【问题讨论】:
-
示例数据有助于说明您的输入和期望的结果。
-
遇到冲突怎么办?例如一个 csv 表示 user_id, cat2 = 0 和另一个 user_id, cat2 = 1 ?另外,到目前为止,您尝试过什么?
-
值的存在优先。到目前为止,我一直在试图说服它对于 map reduce 功能来说是一种糟糕的格式。我们控制数据的格式,因此计划对其进行更改。但我很好奇是否有其他人遇到过这类问题。
标签: apache-spark bigdata