0
我被告知,任何配置單元作業都會佔用32 GB的內存,或者從羣集中消耗大量的內存,並且執行簡單的行插入操作將導致創建許多小文件。Hive處理小數據表插入有問題嗎?
這是真的嗎?
是否使用Hive來插入少量數據本身就是錯誤的?
我被告知,任何配置單元作業都會佔用32 GB的內存,或者從羣集中消耗大量的內存,並且執行簡單的行插入操作將導致創建許多小文件。Hive處理小數據表插入有問題嗎?
這是真的嗎?
是否使用Hive來插入少量數據本身就是錯誤的?
小文件可能是Hadoop自身的問題。當您將單個行插入配置單元中時,每行都將保存到不同的文件中。每次插入操作需要幾秒鐘的時間。你可以在下面的例子中看到。我已將3行插入配置單元表中,並創建了3個2字節文件。您應該避免在Hive中插入少量數據。它可能會導致名稱節點內存不足等問題,因爲文件的元數據將存儲在內存中。
create table testing (t int);
insert into table testing values (1);
insert into table testing values (2);
insert into table testing values (3);
dfs -ls /apps/hive/warehouse/testing;
-rwxrwxrwx 1 root hdfs 2 2015-12-08 23:59 /apps/hive/warehouse/testing/000000_0
-rwxrwxrwx 1 root hdfs 2 2015-12-08 23:59 /apps/hive/warehouse/testing/000000_0_copy_1
-rwxrwxrwx 1 root hdfs 2 2015-12-08 23:59 /apps/hive/warehouse/testing/000000_0_copy_2
元數據將消耗多少內存? – paolov
這將是每個文件的幾個字節。如果不可避免的話,你可以有一些小表。但是,您應該避免使用上述方法插入數千行。您需要定期將這些小文件合併爲較大的文件。 –
每個文件幾個字節聽起來不像。如果他們可以合併,那麼似乎可以減少這個問題。但是在運行插入程序時,羣集上是否存在潛在的重大影響? – paolov