如何将文本文件加载到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。无效 后记。
答案 0 :(得分: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';
现在您的架构与您拥有的数据格式保持同步。
现在您需要像之前创建的那样创建ORC表。这是创建该表的更简单的语法。
create table MyDB.TEST_ORC (
Col1 String,
Col2 String,
Col3 String,
Col4 String)
STORED AS ORC;
您的TEST_ORC表现在是一张空表。您可以使用以下命令使用TEST表中的数据填充此表。
INSERT OVERWRITE TABLE TEST_ORC SELECT * FROM TEST;
上述语句将从TEST表中选择所有记录,并尝试将这些记录写入TEST_ORC表。由于TEST_ORC是一个ORC表,因此当写入表中时,数据将被动态转换为ORC格式。
您甚至可以检查TEST_ORC表的存储位置以查找ORC文件。
现在您的数据采用ORC格式,您的表TEST_ORC具有解析它所需的模式。如果不需要,您现在可以放弃TEST表。
希望有所帮助!