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。不管怎样,我都想把它修好。