gpt4 book ai didi

hadoop - 将数据从 HBase 迁移到文件系统。 (将 Reducer 输出写入本地或 Hadoop 文件系统)

转载 作者:可可西里 更新时间:2023-11-01 16:20:31 25 4
gpt4 key购买 nike

我的目的是将数据从 Hbase 表迁移到平面(比如 csv 格式)文件。我习惯了 TableMapReduceUtil.initTableMapperJob(表名, 扫描, GetCustomerAccountsMapper.class, Text.class, Result.class, 工作);用于扫描 HBase 表和 TableMapper for Mapper。我的挑战在于强制 Reducer 将 Row 值(以扁平格式标准化)转储到本地(或 Hdfs)文件系统。我的问题是既不能看到 Reducer 的日志,也不能看到我在 Reducer 中提到的路径中的任何文件。

这是我的第 2 或第 3 份 MR 工作,也是第一份正式的工作。经过两天的努力,我仍然不知道如何实现我的目标。

如果有人能指出正确的方向,那就太好了。

这是我的 reducer 代码 -

public void reduce(Text key, Iterable<Result> rows, Context context)
throws IOException, InterruptedException {
FileSystem fs = LocalFileSystem.getLocal(new Configuration());
Path dir = new Path("/data/HBaseDataMigration/" + tableName+"_Reducer" + "/" + key.toString());

FSDataOutputStream fsOut = fs.create(dir,true);

for (Result row : rows) {
try {
String normRow = NormalizeHBaserow(
Bytes.toString(key.getBytes()), row, tableName);
fsOut.writeBytes(normRow);

//context.write(new Text(key.toString()), new Text(normRow));
} catch (BadHTableResultException ex) {
throw new IOException(ex);
}
}
fsOut.flush();
fsOut.close();

我的 Reducer 输出配置

Path out = new Path(args[0] + "/" + tableName+"Global");
FileOutputFormat.setOutputPath(job, out);

提前致谢 - Panks

最佳答案

为什么不减少到 HDFS 并在完成后使用 hdfs fs 导出文件

hadoop fs -get /user/hadoop/file localfile

如果你想在reduce阶段处理它,看看this article on OutputFormat在 InfoQ 上

关于hadoop - 将数据从 HBase 迁移到文件系统。 (将 Reducer 输出写入本地或 Hadoop 文件系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8429823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com