当前位置: 首页 > 知识库问答 >
问题:

在Azure HDInsights中从分区拼花文件创建配置单元外部表

鲁成天
2023-03-14
CREATE EXTERNAL TABLE table_name (uid string, title string, value string) 
PARTITIONED BY (year int, month int, day int) STORED AS PARQUET 
LOCATION 'wasb://cont@storage_name.blob.core.windows.net/data';

我错过了什么?

共有1个答案

唐阳飙
2023-03-14

创建分区表后,运行以下操作以将目录添加为分区

MSCK REPAIR TABLE table_name;

如果有大量分区,则可能需要设置hive.msck.repair.batch.size

当存在大量未跟踪的分区时,有一项规定可以批量运行MSCK修复表,以避免OOME(内存不足错误)。通过为属性Hive.msck.repair.batch.size提供配置的批处理大小,它可以在批处理中内部运行。属性的默认值为零,这意味着它将同时执行所有分区。

这可能会解决您的问题,但是如果数据非常大,它就不起作用了。请参阅此处的相关问题。

作为一种变通方法,还有另一种方法可以添加分区来逐个配置metastore,如下所示:

alter table table_name add partition(年=2016,月=10,日=11,小时=11)

 类似资料:
  • 我正在使用Spark生成拼花文件(通过分区,使用Snappy压缩),并将它们存储在HDFS位置。 拼花数据文件存储在下 然后为其创建配置单元表,如下所示:

  • 1-创建了源表 2-将数据从本地加载到源表 3-创建了另一个带有分区的表-partition_table 我不确定如何在外部表中进行分区。有人能帮我一步一步地描述一下吗?。

  • 我正在尝试在ORC文件上创建外部配置单元表。 但当我试图在创建的表上执行select操作时,会出现以下错误: 有什么建议吗??

  • 我有一个配置单元外部表,有3个分区列(a,B,C),现在我想从分区中删除B和C列。这样做可能吗?我已经尝试使用Alter table tab_name drop column col_name;---但它会抛出一个错误,说明无法删除分区列。

  • 问题内容: 我每天都在“测试”文件夹下写入文件。例如: 我在创建的LOGS表中看不到任何数据。 但是,我使用创建表 我可以看到那几天的记录。 我想在我的HIVE表中的/ test目录下查看所有数据,而且/ test目录每天都填充有新文件。 问题答案: 选项1 为了支持子目录 如果您的Hive版本低于2.0.0,那么 选项2 创建一个分区表 如果使用标准约定保留目录,例如,而不是保留目录,将更易于管