hive產生不少.staging_hive文件

在使用spark-streaming的時候,調用了spark-sql,會執行hive語句,這個時候在hive的目錄下回產生不少.staging_hive文件,並且是操做哪一個表,就在哪一個表中產生。hive也會產生.staging_hive,可是hive產生後會被移除,而spark-sql不會移除,因此咱們須要手動處理這種狀況。sql

  1. 在hive-site.xml中添加以下屬性,全部的.staging-hive*文件都產生到/tmp/staging/目錄下了。在cm的hive配置中,這一部分的配置須要加在「hive-site.xml 的 Hive 客戶端高級配置代碼段(安全閥)」這一項中,由於這一部分的配置是生效在hive的客戶端中,加在服務器端是沒用的,不生效。.hive-staging只是產生文件的前綴,不是目錄。
<property>
    <name>hive.exec.stagingdir</name>
    <value>/tmp/staging/.hive-staging</value>
</property>
  1. 寫shell腳本,定時去/tmp/hive/staging/.staging目錄下清除文件,注意,清除文件必定要清除昨天的,今天產生的有可能正好在用,若是被移除了,則會報錯,調試的時候碰到過這種狀況。

參考:
hive任務中MoveTask的策略
hive insert overwrite1.2.1 沒法刪除舊文件的問題shell

相關文章
相關標籤/搜索