Hive 使用“创建配置单元表”;如“选择”;或;例如;并指定分隔符
有可能做一个测试吗Hive 使用“创建配置单元表”;如“选择”;或;例如;并指定分隔符,hive,sql-like,create-table,Hive,Sql Like,Create Table,有可能做一个测试吗 按选择创建表格 使用 row format delimited fields terminated by '|'; 或者做一个 创建以“|”结尾的类似表格的行格式分隔字段 《语言手册》似乎没有说明。。但有些事让我觉得好笑,我在过去就已经做到了 在配置单元中可以选择创建表(CTAS)。 您可以尝试以下命令: CREATE TABLE new_test row format delimited fields terminated by '|' ST
按选择创建表格
使用
row format delimited fields terminated by '|';
或者做一个
创建以“|”结尾的类似表格的行格式分隔字段代码>
《语言手册》似乎没有说明。。但有些事让我觉得好笑,我在过去就已经做到了
在配置单元中可以选择创建表(CTAS)。
您可以尝试以下命令:
CREATE TABLE new_test
row format delimited
fields terminated by '|'
STORED AS RCFile
AS select * from source where col=1
无法对目标表进行分区
目标不能是外部表
它复制结构和数据
在Hive中也可以创建类似表格的功能。
它只是复制源表定义
假设我们有一个名为employee
hive> SHOW CREATE TABLE employee;
OK
CREATE EXTERNAL TABLE employee(
id string,
fname string,
lname string,
salary double)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'colelction.delim'=':',
'field.delim'=',',
'line.delim'='\n',
'serialization.format'=',')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'maprfs:/user/hadoop/data/employee'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='false',
'numFiles'='0',
'numRows'='-1',
'rawDataSize'='-1',
'totalSize'='0',
'transient_lastDdlTime'='1487884795')
创建person
表,如employee
hive> SHOW CREATE TABLE employee;
OK
CREATE EXTERNAL TABLE employee(
id string,
fname string,
lname string,
salary double)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'colelction.delim'=':',
'field.delim'=',',
'line.delim'='\n',
'serialization.format'=',')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'maprfs:/user/hadoop/data/employee'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='false',
'numFiles'='0',
'numRows'='-1',
'rawDataSize'='-1',
'totalSize'='0',
'transient_lastDdlTime'='1487884795')
创建类似员工的表格代码>
创建person
外部表,如employee
hive> SHOW CREATE TABLE employee;
OK
CREATE EXTERNAL TABLE employee(
id string,
fname string,
lname string,
salary double)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'colelction.delim'=':',
'field.delim'=',',
'line.delim'='\n',
'serialization.format'=',')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'maprfs:/user/hadoop/data/employee'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='false',
'numFiles'='0',
'numRows'='-1',
'rawDataSize'='-1',
'totalSize'='0',
'transient_lastDdlTime'='1487884795')
创建类似于员工位置的表person'maprfs:/user/hadoop/data/person'代码>
然后使用
DESC人代码>
查看新创建的表架构
上面提供的两个答案都很好
创建表person作为select*from employee李>
创建类似员工的表格李>
回答得很好!解决了(a)特定语法和(b)限制。这正是我要找的。@Venkatesh,如果我在创建表为SELECT
时没有提到,那么默认的字段终止符/分隔符是什么。它将使用目标表的字段分隔符还是某些默认字段分隔符?@Manindar默认配置单元分隔符是^A
或(ctrl-A)
我尝试了此操作,但未复制TBLProperty。不管怎样,我都想把它修好。