gpt4 book ai didi

hadoop - Hive:创建表和分区依据

转载 作者:可可西里 更新时间:2023-11-01 14:43:21 24 4
gpt4 key购买 nike

我有一个加载数据的表,如下所示:

create table xyzlogTable (dateC string , hours string, minutes string, seconds string, TimeTaken string, Method string, UriQuery string, ProtocolStatus string) row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' with serdeproperties( "input.regex" = "(\\S+)\\t(\\d+):(\\d+):(\\d+)\\t(\\S+)\\t(\\S+)\\t(\\S+)\\t(\\S+)", "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s") stored as textfile;

load data local inpath '/home/hadoop/hive/xyxlogData/' into table xyxlogTable;

发现总行数超过 300 万。有些查询工作正常,有些则进入无限循环。

在看到select、group by 查询需要很长时间,有时甚至不返回结果后,决定进行分区。

但是下面两个语句都失败了:

create table xyzlogTable (datenonQuery string , hours string, minutes string, seconds string, TimeTaken string, Method string, UriQuery string, ProtocolStatus string) partitioned by (dateC string); 

FAILED: Error in metadata: AlreadyExistsException(message:Table xyzlogTable already exists) FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

Alter table xyzlogTable (datenonQuery string , hours string, minutes string, seconds string, TimeTaken string, Method string, UriQuery string, ProtocolStatus string) partitioned by (dateC string);

FAILED: Parse Error: line 1:12 cannot recognize input 'xyzlogTable' in alter table statement

知道有什么问题吗!

最佳答案

这正是我更喜欢在 Hive 中使用外部表的原因。您创建的表不是外部表(您使用了 create table 而不是 create external table)。对于非外部表,删除表,删除 HDFS 中的元数据(名称、列名、类型等)和表的数据。相反,当删除外部表时,只会删除元数据,HDFS 中的数据会保留下来。

您有几个选择:

  1. 如果导入成本高且数据尚未分区。保留此表,但创建一个新表,比如 xyzlogTable_partitioned,它将是此表的分区版本。您可以使用 Dynamic Partitioning在 Hive 中填充这个新表。

  2. 如果导入成本高但数据已经分区;例如,假设您已经在 HDFS 中的每个分区的单独文件中拥有数据。创建一个新的分区表并有一个 bash 脚本(或等效脚本),从对应于未分区表的 HDFS 目录移动(或复制然后删除,如果你保守的话)到对应于新分区的适当分区的目录表。

  3. 如果导入很便宜:删除整个表。重新创建一个新的分区表并重新导入。很多时候,如果导入过程不知道分区模式(换句话说,如果导入不能直接将数据推送到适当的分区),那么有一个未分区的表(就像你已经拥有的表)是一个常见的用例作为暂存表,然后使用 Hive 查询或动态分区来填充新的分区表,该表将在工作流的后续查询中使用。

关于hadoop - Hive:创建表和分区依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13800360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com