impalaでクエリを実行すると,以下のようなエラーが出ることがある。
クエリはエラーになる。
1 |
Create file /tmp/impala-scratch/.... with errno=2 description=Error(2): No such file or directory |
以下のcommunityサイトで質問されている方がいた。
impala2.0からサポートされている’spill to disk’の機能だ。巨大なデータのソートやjoin,grouping,分析関数の実行時などメモリ消費がリミットを超える場合でもout of memoryで終了するのではなく,パフォーマンスの低下を許容しつつdiskも使って何とか結果を返してくれる。
このspill to diskで使用されるのが,--scratch_dirs="path_to_directory"
で,ドキュメントによるとデフォルトでは/tmp/impala-scratch
となっている。スレーブノードのローカルディスク上で/tmp/impala-scratch
を探すとやはりいない。恐らくこのディレクトリは自分で作成しないといけない?と思われる。
上記サイトでも言及されているように/tmp
は消去される可能性もあることを想定し,今回は/var/tmp
に作成することにした。
1 2 3 4 5 6 |
directory "/var/tmp/impala-scratch" do owner "impala" group "impala" mode "0755" action :create end |
そして,Cloudera Managerではscratch_dirs
の設定を行なう入力フォームが以下のように用意されている。設定を変更してimpalaサービスの再起動を行なう。
コメント