从 hdfs 中以 orc 格式存储的文件创建 hive 表

jUs*_*Usr 5 hadoop hive

我想知道是否可以从存储在 hadoop 文件系统(users.tbl)中的 ORC 格式的文件创建一个配置单元表。我读到 ORC 格式在优化方面比文本更好。所以我想知道是否可以使用stored as orc tblpropertieslocation属性创建一个 hive 表,以从 hdfs 文件创建一个 orc 格式的表。

如下:

create table if not exists users
(USERID BIGINT,
 NAME STRING,
 EMAIL STRING,
 CITY STRING)
STORED AS ORC TBLPROPERTIES ("orc.compress"="SNAPPY")
LOCATION '/tables/users/users.tbl';
Run Code Online (Sandbox Code Playgroud)

插入文本:

create table if not exists users
    (USERID BIGINT,
     NAME STRING,
     EMAIL STRING,
     CITY STRING)
     ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE 
     LOCATION '/tables/users/users.tbl';
Run Code Online (Sandbox Code Playgroud)

Roj*_*Sam 2

你不可能只用一步就能做到这一点。创建表语句不处理数据,只是指定格式和位置。

我的建议是使用“STORED AS TEXTFILE”创建语句创建临时表,并使用 ORC 作为存储格式(使用空位置)创建最终表。

然后将临时“文本表”中的所有行插入“ORC 表”中。

Insert [overwrite] table orcTable select col1, col2 from textTable;
Run Code Online (Sandbox Code Playgroud)

插入覆盖将用新数据替换表中的所有数据。如果您只想添加新数据,您将使用“插入表...”

导入后,您可以删除临时“文本表”。