从以 orc 格式存储在 hdfs 中的文件创建配置单元表

Posted

技术标签:

【中文标题】从以 orc 格式存储在 hdfs 中的文件创建配置单元表【英文标题】:Create hive table from file stored in hdfs in orc format 【发布时间】:2016-08-26 06:31:59 【问题描述】:

我想知道是否可以从存储在 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';

插入文本:

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';

【问题讨论】:

【参考方案1】:

您不能仅一步完成。 create table 语句不处理数据,只指定格式和位置。

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

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

Insert [overwrite] table orcTable select col1, col2 from textTable;

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

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

【讨论】:

..我认为 hive 中没有临时表...创建一个外部并为您的文本文件所在的位置提供位置..从这个外部表运行插入选择到 orc 表。 .而且你有兽人桌。 它是临时的,因为它只用于将数据插入到最终表中,之后您很可能会想要删除它。但我同意这不是像其他关系数据库中那样的“临时”表,它会在用户会话关闭时自动删除该表。【参考方案2】:

1.在hive中创建一个表。

 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';

2。将数据加载到表中。

 LOAD DATA INPATH '/hdfs/dir/folder/to/orc/files/' INTO TABLE MyDB.TEST;

【讨论】:

【参考方案3】:

只需在现有数据上创建表格,如下所示

CREATE EXTERNAL TABLE mytable
(
col1 bigint,
col2 bigint
) 
STORED AS ORC
location '<ORC File location';

请参考此链接

https://community.hortonworks.com/questions/179897/hive-table-creation-from-orc-format-file.html

【讨论】:

【参考方案4】:

只需在您的位置上创建表并使用msck repair table table_name,这样您的数据就会被加载到您的表中以供查询。

【讨论】:

以上是关于从以 orc 格式存储在 hdfs 中的文件创建配置单元表的主要内容,如果未能解决你的问题,请参考以下文章

Hive Streaming 追加 ORC 文件

Java读取HDFS上的ORC格式文件

parquet和orc

带有 partitionBy 的 Spark DataFrame saveAsTable 在 HDFS 中不创建 ORC 文件

Hive性能优化之表数据优化

大数据:Hive - ORC 文件存储格式