【发布时间】:2014-10-22 03:30:20
【问题描述】:
我有一个关于 Impala 的基本问题。我们知道 Impala 允许您查询存储在 HDFS 中的数据。现在,如果一个文件被分成多个块,假设一行文本分布在两个块中。在 Hive/MapReduce 中,RecordReader 负责此操作。
Impala 在这种情况下如何读取记录?
【问题讨论】:
我有一个关于 Impala 的基本问题。我们知道 Impala 允许您查询存储在 HDFS 中的数据。现在,如果一个文件被分成多个块,假设一行文本分布在两个块中。在 Hive/MapReduce 中,RecordReader 负责此操作。
Impala 在这种情况下如何读取记录?
【问题讨论】:
引用my answer on the Impala user list:
当 Impala 发现不完整的记录时(例如,扫描某些文件格式,如文本或 rc 文件时可能发生这种情况),它将继续从下一个块开始以增量方式读取,直到它读取整个记录。请注意,这可能需要少量的“远程读取”(从远程数据节点读取),但与应该在本地读取的整个块相比(理想情况下通过短路读取),这通常是非常小的数量。
【讨论】: