内部表和外部表在Hive中的性能差异

4

我想通过临时使用Hive来对HDFS上的文件执行一些操作,因此我不想使用内部表。但是我的数据非常庞大,例如1TB,因此我担心外部表的性能问题。因此,我提出了以下问题:Hive中表和外部表之间的性能差异。


1
希望您正在寻找Hive中内部表和外部表之间的区别。请澄清一下。 - Sandeep Singh
是的,我用错了单词“extend”。非常抱歉。我使用正确的单词重新搜索后得到了一些答案,它们之间在性能上没有区别。这不是正确的吗? - ElapsedSoul
请参考我的这个答案:https://dev59.com/SGQn5IYBdhLWcg3wLkkd#37192041 - Ani Menon
是的,这两种表类型之间的性能没有太大差异。但是如果您有大量数据并且暂时使用Hive,则应使用内部表。 - Sandeep Singh
当我的数据很大时,如果它们之间没有区别,为什么我应该使用内部表? - ElapsedSoul
最后,我认为它们之间的性能没有区别,它们之间唯一的区别是当您删除表时,使用内部表也会删除您的数据。这意味着如果您想同时执行此操作,则使用内部表可以减少工作量。如果您打算追求性能,您可以使用@Ani Menon提到的ORC表。 - ElapsedSoul
2个回答

0
我所经历的外部表和内部表性能之间的差异是:
内部表需要更多的CPU时间
外部表需要较少的CPU时间,大约减少了40%

0
你可以只是创建Hive的外部表并使用它们。我没有注意到内部表和外部表在性能上有任何重大差异。
为了提高性能,你可以创建由Hive管理的ORC(文件格式)表。
Create ORC table:
CREATE TABLE IF NOT EXISTS <orc_table_name>(
    <col name> <type>)
COMMENT 'comments'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS ORC;

然后插入ORC表:
INSERT OVERWRITE TABLE <orc_table_name> SELECT * FROM <external_table_name>;

参考:HDFS到Hive外部表和ORC


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接