将文本加载到Orc文件

时间:2018-02-22 13:15:53

标签: hadoop hive orc

如何将文本文件加载到Hive orc外部表中?

create table MyDB.TEST (
 Col1 String,
 Col2 String,
 Col3 String,
 Col4 String)
 STORED AS INPUTFORMAT
   'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
 OUTPUTFORMAT
    'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';

我已经将上表创建为Orc。但是从表中获取数据时它会显示以下错误 失败,异常

  

java.io.IOException:org.apache.orc.FileFormatException:格式错误的ORC文件hdfs:// localhost:9000 / Ext / sqooporc / part-m-00000。无效   后记。

1 个答案:

答案 0 :(得分:1)

有多个步骤。遵循细节。

  1. 创建一个能够从纯文本文件中读取的配置单元表。假设您的文件是逗号分隔文件,并且您的文件位于名为/user/data/file1.txt的位置上的HDFS上,则以下将是语法。

    create table MyDB.TEST (
      Col1 String,
      Col2 String,
      Col3 String,
      Col4 String
    )
    row format delimited
    fields terminated by ','
    location '/user/data/file1.txt';
    
  2. 现在您的架构与您拥有的数据格式保持同步。

    1. 使用ORC架构创建另一个表
    2. 现在您需要像之前创建的那样创建ORC表。这是创建该表的更简单的语法。

      create table MyDB.TEST_ORC (
        Col1 String,
        Col2 String,
        Col3 String,
        Col4 String)
      STORED AS ORC;
      
      1. 您的TEST_ORC表现在是一张空表。您可以使用以下命令使用TEST表中的数据填充此表。

        INSERT OVERWRITE TABLE TEST_ORC SELECT * FROM TEST;
        
      2. 上述语句将从TEST表中选择所有记录,并尝试将这些记录写入TEST_ORC表。由于TEST_ORC是一个ORC表,因此当写入表中时,数据将被动态转换为ORC格式。

        您甚至可以检查TEST_ORC表的存储位置以查找ORC文件。

        现在您的数据采用ORC格式,您的表TEST_ORC具有解析它所需的模式。如果不需要,您现在可以放弃TEST表。

        希望有所帮助!