database - DBInputFormat多记录处理

标签 database hadoop

当我们使用Hadoop连接到MYSQL之类的RDBMS时,通常会从数据库获得一条记录到用户定义的类中,该类扩展了DBWritable和Writable。如果我们的SQL查询生成N条记录作为输出,则将记录读取到用户定义的类中的操作完成了N次。有没有一种方法可以让我同时将更多的记录数放入映射器中,而不是每次获取1条记录?

最佳答案

如果我对您的理解正确,那么您会认为Hadoop在后台导致了N SELECT语句。那是不对的。如您在 DBInputFormat 's source中所见,它基于Hadoop认为合适的内容创建了大块的行。

显然,每个映射器都必须执行一个查询来获取一些数据以进行处理,并且它可能会重复执行,但这仍然与表中的行数相差甚远。

但是,如果性能下降,最好将数据转储到HDFS / Hive中并从那里进行处理。

关于database - DBInputFormat多记录处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15745018/

相关文章:

database - 基于图形的数据库 (http ://neo4j. org/) 的用例是什么?

hadoop - 多个 map 更新日志文件同步问题

hadoop - 如何设计每个映射器来处理SequenceFile的每一行?

linux - Hive命令行通过Cygwin select查询报错

hadoop - Amazon Elastic Cloud 无法在子网上启动

javascript - 如何仅通过使用 ID 使用 AJAX 和 PHP 删除 MySQL 数据库和屏幕上的文件?

c - 在 C 中写入并关闭文件后读取文件

apache-spark - YARN 在 launch_container.sh 中如何执行 PYSPARK 环境设置

php - MySQL 运行多个查询以保持代码干燥,性能问题?

database - 对于可能以不同语言使用的 PostgreSQL 数据库,正确的排序规则是什么?