hive-create table语句,其中包含“select query”和“fields terminated by”命令

yk9xbfzb  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(380)

我想使用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 '|';

但这是行不通的。我知道另一种方法是用字段名和“以“|”终止的字段”命令创建一个表结构,然后加载数据。
但是,有没有其他方法可以将这两种方法组合到一个查询中,使我能够使用另一个表中的筛选数据以及字段分隔符创建一个表呢?

luaexgnf

luaexgnf1#

row format delimited .. 在前面 AS 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
bwitn5fc

bwitn5fc2#

正如您在文档中看到的,当使用ctas(createtableasselect)语句时 ROW FORMAT 语句(实际上,与新表相关的所有设置)在 SELECT 声明。

相关问题