gpt4 book ai didi

Hadoop MapReduce DBInputFormat 和 DBOutputFormat

转载 作者:可可西里 更新时间:2023-11-01 16:26:42 27 4
gpt4 key购买 nike

我需要从 MYSQL 导入数据,运行 MR 并将其导出回 MYSQL。我能够使用 DBInputFormat 和 DBOutputFormat 在单个 MR 作业中成功完成一些记录。当我将输入记录扩展到 100+ 百万条记录时,MR 作业挂起。替代方法是将数据导出到 HDFS ,运行 MR 作业并推送回 My SQL。

对于包含大约 4 亿条记录的庞大数据集,使用 DBInputFormat 和 DBOutputFormat 还是使用 HDFS 作为数据源和目标,哪个选项更好。

使用 HDFS 在我的 MR 作业前后增加了一个步骤。由于数据存储在 HDFS 上,因此它会被复制(默认 3)并且需要更多的硬盘空间。谢谢鲁佩什

最佳答案

我认为最好的方法应该是使用 SQOOP 来处理这种情况。Apache Sqoop 是一种工具,用于在 Apache Hadoop 和结构化数据存储(例如关系数据库,如 MySQL 或 Oracle)之间高效地传输大量数据。Sqoop 自动化了大多数在这个过程中,依赖于数据库来描述要导入的数据的模式。 Sqoop 使用 MapReduce 导入和导出数据,提供并行操作和容错能力。请查看此链接并探索 Sqoop 以获取详细信息。 SQOOP details

为了使用 DBInputFormat,您需要编写一个类,将数据库记录中的列反序列化为单独的数据字段以供使用。这非常乏味——而且完全是算法。 Sqoop 自动生成类定义来反序列化数据库中的数据。这些类也可用于以 Hadoop 的 SequenceFile 格式存储结果,这也允许您利用 HDFS 中的内置压缩。这些类被写成 .java 文件,您可以稍后将其合并到您自己的数据处理管道中。类定义是利用 JDBC 读取有关数据库和表的元数据的能力创建的。

当调用 Sqoop 时,它会检索表的元数据,写出要导入的列的类定义,并启动 MapReduce 作业以正确导入表体。

关于Hadoop MapReduce DBInputFormat 和 DBOutputFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875572/

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