为什么hadoopMap器生成的文件中会生成tab空间

8mmmxcuj  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(427)

我写了这样一个Map:

@Override
protected void map(VarLongWritable userId, RecommendedItemsWritable recommendations, Context ctx) throws IOException,
        InterruptedException {

    List<RecommendedItem> items = recommendations.getRecommendedItems();
    for (RecommendedItem item : items) {
        long userID = Long.valueOf(userId.toString().trim());
        System.out.println(userID);
        ctx.write(new LongWritable(userID), new Text(item.getItemID() + "," + item.getValue()));
    }
}

它生成了以下内容:

1   ,105,3.8652005
1   ,106,3.7047918
1   ,104,3.6800702
2   ,106,2.7261393
2   ,105,2.4083052
2   ,107,2.0
3   ,106,3.5539715
3   ,102,3.4113002
3   ,103,3.323024
4   ,107,4.674651
4   ,105,4.371781
4   ,102,4.0743575
5   ,107,3.754705

实际上,我只想将生成的文件加载到配置单元表中。但是对于选项卡空间,配置单元表中的值是错误的。
那么有没有办法删除文件中的制表符空间呢?

xxslljrj

xxslljrj1#

我不认为有办法删除键和值之间的制表符空间。但是,如果不需要缩减器,则只需将所有信息放入Map器输出的键中:

ctx.write(new Text(userID + "," + item.getItemID() + "," + item.getValue()), new Text(""));

将Map输出键的类型更改为文本。

相关问题