当前位置: 首页 > 面试题库 >

动态分区+在HIVE上创建AS

巩阳秋
2023-03-14
问题内容

我正在尝试CREATE AS使用HiveCLI上的动态分区从另一个表创建一个新表。我正在从Hive官方Wiki学习,这里有以下示例:

 CREATE TABLE T (key int, value string) 
 PARTITIONED BY (ds string, hr int) AS
 SELECT key, value, ds, hr+1 hr1 
   FROM srcpart 
   WHERE ds is not null 
   And hr>10;

但是我收到了这个错误:

失败:SemanticException [错误10065]:

CREATE TABLE AS SELECT命令无法指定目标表的列列表

资料来源:https :
//cwiki.apache.org/confluence/display/Hive/DynamicPartitions#DynamicPartitions-
Syntax


问题答案:

由于您已经了解了目标表的完整模式,因此请先尝试创建它,然后使用LOAD DATA命令填充它:

SET hive.exec.dynamic.partition.mode=nonstrict;

CREATE TABLE T (key int, value string) 
PARTITIONED BY (ds string, hr int);

INSERT OVERWRITE TABLE T PARTITION(ds, hr) 
SELECT key, value, ds, hr+1 AS hr 
   FROM srcpart 
   WHERE ds is not null 
   And hr>10;

注意:因为要执行完整的动态分区插入,所以需要set命令。



 类似资料:
  • appI预览希望区分我通过单击按钮创建的edittext,并在特定的edittext上实现onclick侦听器 。

  • 即使它是Hive表或HDFS文件,当Spark读取数据并创建数据帧时,我也在想RDD /数据帧中的分区数将等于HDFS中的部分文件数。但是,当我使用 Hive 外部表进行测试时,我可以看到该数字与 部件文件的数量 不同。数据帧中的分区数为 119。该表是一个 Hive 分区表,其中包含 150 个部分文件,最小文件大小为 30 MB,最大大小为 118 MB。那么是什么决定了分区的数量呢?

  • 我有以下制表符分隔的示例数据集: 我正在对此数据运行一些转换,最终数据位于spark dataset中。之后,我用“period”分区将该数据集写入s3。因为我也希望在s3文件中使用period,所以我正在从from period列创建另一列“datasetperiod”。 我的scala函数来保存TSV数据集。 在S3上保存数据集的Scala代码。为S3上的分区添加新列datasetPeriod

  • 本文向大家介绍hive partition分区相关面试题,主要包含被问及hive partition分区时的应答技巧和注意事项,需要的朋友参考一下 解答: 分区表,动态分区

  • insert overwrite from select语句中的配置单元动态分区没有加载动态分区的数据,而是提供了数据配置单元默认分区。 如果我说显示分区表2; 它只给出一个分区细节,即配置单元默认分区 我有一个没有任何分区的暂存表,它从序列文件中读取数据。 如果不存在,则创建外部表table1(DS字符串、col1字符串、col2字符串、col3字符串) 行格式分隔字段,以存储为SEQUENCE

  • 问题内容: 我有这样的按钮 还有这个 上面的代码工作正常,但我想使其动态化。 所以我像下面这样改变它。 这行不通,我不知道为什么,尽管如果我检查元素,上面的代码会生成如前所述的正确代码。 问题答案: 括号符号的使用: 指向当前作用域对象,因此您可以通过变量名称访问方法。