- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 Hadoop 运行 ETL 作业,我需要将经过转换的有效数据输出到 HBase,并将该数据的外部索引输出到 MySQL。我最初的想法是,我可以使用 MultipleOutputFormats 通过 HFileOutputFormat(键是 Text,值是 ProtobufWritable)和 TextOutputFormat 的索引(键是 Text,值是 Text)导出转换后的数据。
平均大小的作业(我需要同时运行多个作业的能力)的输入记录数约为 7 亿。
我想知道 A) 就效率和复杂性而言,这似乎是一种合理的方法,以及 B) 如果可能的话,如何使用 CDH3 发行版的 API 来实现这一点。
最佳答案
如果您使用旧的 MapReduce API,那么您可以使用 MultipleOutputs并写入多种输出格式。
但是,如果您使用的是新的 MapReduce API,我不确定是否有办法完成您想要做的事情。您可能不得不为对相同的输入执行另一个 MapReduce 作业付出代价。但在肯定地说之前,我必须对其进行更多研究。可能有一种方法可以将旧 API 和新 API 组合在一起,以允许您将 MultipleOutputs 与新 API 结合使用。
编辑:看看这个 post .您或许可以实现自己的 OutputFormat并包装适当的 RecordWriters在OutputFormat并使用它写入多种输出格式。
关于Hadoop MultipleOutputFormats 到 HFileOutputFormat 和 TextOutputFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446516/
用Java编写简单的Map Reduce程序时,下面的行可以正常工作。 job.setOutputFormatClass(TextOutputFormat.class) 但是Scala中的同一件
我正在使用 Hadoop 运行 ETL 作业,我需要将经过转换的有效数据输出到 HBase,并将该数据的外部索引输出到 MySQL。我最初的想法是,我可以使用 MultipleOutputFormat
我的 reducer 类使用 TextOutputFormat(Job 给出的默认 OutputFormat)生成输出。我喜欢在 MapReduce 作业完成后使用此输出来聚合输出。除此之外,我喜欢用
我看到一种机制可以使用 mapreduce.textoutputformat.separator(使用 1.03 的 api)覆盖键和值之间的分隔符。但我希望能够控制记录之间的分隔符。仅供引用,我使用
我是一名优秀的程序员,十分优秀!