Hive 配置单元-使用“选择查询”和“字段终止于”命令创建表语句

Hive 配置单元-使用“选择查询”和“字段终止于”命令创建表语句,hive,hiveql,Hive,Hiveql,我想使用select语句在配置单元中创建一个表,该语句从另一个表中获取数据的子集。我使用以下查询来执行此操作: create table sample_db.out_table as select * from sample_db.in_table where country = 'Canada'; 当我查看这个表的HDFS位置时,没有字段分隔符 但我需要创建一个表,其中包含来自另一个表的过滤数据以及字段分隔符。例如,我正在尝试做以下事情: create table sample_db.ou

我想使用select语句在配置单元中创建一个表,该语句从另一个表中获取数据的子集。我使用以下查询来执行此操作:

create table sample_db.out_table as 
select * from sample_db.in_table where country = 'Canada';
当我查看这个表的HDFS位置时,没有字段分隔符

但我需要创建一个表,其中包含来自另一个表的过滤数据以及字段分隔符。例如,我正在尝试做以下事情:

create table sample_db.out_table as 
select * from sample_db.in_table where country = 'Canada'
ROW FORMAT SERDE 
  FIELDS TERMINATED BY '|';
但这不起作用。我知道另一种方法是用字段名和以“|”命令结尾的字段创建一个表结构,然后加载数据

但是,有没有其他方法将这两种方法结合到一个查询中,使我能够使用从另一个表中筛选的数据以及字段分隔符创建一个表?

如您所见,当使用CTAS create table As Select语句时,实际上是ROW FORMAT语句,与新表相关的所有设置都在SELECT语句之前。

将行格式分隔。。在前面作为选择

像这样做 将查询更改为您的查询

hive> CREATE TABLE ttt  row format delimited fields terminated by '|' AS select *,count(1) from t1 group by id ,name  ;
Query ID = root_20180702153737_37802c0e-525a-4b00-b8ec-9fac4a6d895b
结果如下

[root@hadoop1 ~]# hadoop fs -cat /user/hive/warehouse/ttt/**
2|\N|1
3|\N|1
4|\N|1