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

在配置单元QL中的表中添加列

耿俊彦
2023-03-14

我正在HIVE中编写代码来创建一个由1300行和6列组成的表:

create table test1 as SELECT cd_screen_function,
     SUM(access_count) AS max_count,
     MIN(response_time_min) as response_time_min,
     AVG(response_time_avg) as response_time_avg,
     MAX(response_time_max) as response_time_max,
     SUM(response_time_tot) as response_time_tot,
     COUNT(*) as row_count
     FROM sheet WHERE  ts_update BETWEEN unix_timestamp('2012-11-01 00:00:00') AND 
     unix_timestamp('2012-11-30 00:00:00') and cd_office = '016'
     GROUP BY cd_screen_function ORDER BY max_count DESC, cd_screen_function;

现在,我想添加另一列access_count1,它包含所有1300行的唯一值,值将是sum(max_count)。max_count是我现有表中的一列。我怎么能做到?我试图通过以下代码更改表alter table test1 ADD COLUMNS(ACCESS_COUNT1INT)set default sum(max_count);

共有1个答案

花品
2023-03-14

不能在配置单元中添加具有默认值的列。您有正确的语法来添加列ALTER TABLE test1 ADD COLUMNS(ACCESS_COUNT1INT);,您只需要去掉DEFAULT sum(max_count)。添加列后,支持表的文件不会发生任何更改。配置单元格通过将null解释为该列中每个单元格的值来处理“丢失”数据。

因此,现在您需要填充列的问题。不幸的是,在Hive中,您实际上需要重写整个表,这一次需要填充列。使用新列重新运行原始查询可能更容易。或者您可以将该列添加到现在的表中,然后为新列选择其所有列加值。

您还可以选择始终合并列到您所需的默认值,并将其保留为null。如果希望null的含义不同于所需的默认值,则此选项将失败。它还要求您始终记住coalesce

 类似资料:
  • 我将geenrated jar文件添加到hdfs目录中,使用: 我尝试使用以下命令创建一个UDf: 但是我得到了如下错误: jar文件被成功地创建并添加到Hive,但它仍然显示没有找到那个类。谁能说出它出了什么问题吗?

  • 我正在Windows7主机上运行Hortonworks 2.2沙盒。我已经为虚拟机分配了2GB内存。每次尝试创建表时,都会出现以下错误: HCatClient在创建表时出错:{“语句”:“使用默认值;创建表kjdrg(bigint,bigint,bigint)注释“k”行格式分隔字段,以“,”;”终止,错误):“无法创建表:kjdrg”,“exec:{“stdout”:“stderr”:"15/0

  • 失败:执行错误,从org.apache.hadoop.hive.ql.exec.FunctionTask返回代码1。配置单元仓库是非本地的,但是/home/hduser/hadoop-tutorial/hadoop-book-master/ch17-hive/src/main/java/com/hadoopbook/Hive/strip.jar指定本地文件系统中的文件。非本地仓库上的资源应指定非本

  • 我使用的是Hive-1.2.1版本。我是Hive新手。 我在TABLE_2中添加了一列并显示空值。我想把日期部分从时间戳列到新创建的列。我尝试了以下查询: 这是正常的,但它在新创建的date_col中显示空值。我只想要date_col中的date。 表1有13列,表2有14列(13+DATE_COL)。 TIMESTAMP_COL:-字符串。 DATE_COL-字符串。 请告诉我如何解决这个问题。

  • 我在配置单元中有orc表我想从这个表中删除列 但我遇到以下异常 执行配置单元查询时出错:OK失败:ParseException行1:35输入“USER_ID1”不匹配,在drop PARTITION语句中的“drop”附近需要分区 有谁能帮助我或提供任何想法来做这件事吗?注意,我正在