前言
最近在看impala原理时候翻出来的一些tip,帮助更好地使用impala,自己整理一下。
0x01 杂项
1. Impala 使用缓存吗?
Impala 不会缓存数据,但它缓存一些表和文件的元数据。尽管因为数据集被缓存到 OS 的缓冲区中,接下来的重复查询可能运行的更快,Impala 不会明确的控制这些。
0x02 Impala任务失败
1. 为什么 SELECT 查询会失败?
当一个 SELECT 语句失败了,原因通常是以下类别之一:
- 因为性能、容量、或网络问题影响了特定的节点导致的超时
- 连接查询的过多内存数用,这一查询的结果会自动取消
- 处理查询中特定的 WHERE 子句时,影响到每一节点上本地代码如何生成的底层问题。例如,特定节点上可能会生成它的处理器不支持的机器指令。假如日志中的错误信息猜测是无效指令(illegal instruction),考虑临时关闭生成本地代码,并重试这个查询
- 异常的输入数据,例如包含一个巨大的长行的文本数据文件(a text data file with an enormously long line),或者使用了没有在 CREATE TABLE 语句中 FIELDS TERMINATED BY 子句中设置的分隔符(or with a delimiter that does not match the character specified in the FIELDS TERMINATED BY clause of the CREATE TABLEstatement)