Row格式serde是创建Hive表时要使用的必需参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Row格式serde是创建Hive表时要使用的必需参数相关的知识,希望对你有一定的参考价值。

我在文本文件的顶部创建了一个临时的hive表,如下所示:

CREATE EXTERNAL TABLE tc (fc String,cno String,cs String,tr String,at String,act String,wa String,dn String,pnm String,rsk String,ttp String,tte String,aml String,pn String,ttn String) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ‘,’ 
STORED AS TEXTFILE 
location '/home/hbaseuser/tc';

然后我创建了一个这样的ORC表:

CREATE EXTERNAL TABLE tc1 (fc String,cno String,cs String,tr String,at String,act String,wa String,dn String,pnm String,rsk String,ttp String,tte String,aml String,pn String,ttn String) 
Row format delimited 
Fields terminated by '	'
STORED AS orc 
location '/user/hbaseuser/tc1';

然后我用这个命令将数据导入hive表:

insert overwrite table tc1 select * from table tc;

现在orc文件可以在'/user/hbaseuser/tc1'获得,我可以从orc表中读取。

我的问题是标签行格式serde 'org.apache.hadoop.hive.contrib.serde2.ORCSerDe'的用途是什么

答案

当指定ROW FORMAT Serde时,它会覆盖本机Serde并将其用于表创建。根据文件,

您可以使用自定义SerDe或使用本机SerDe创建表。如果未指定ROW FORMAT或指定了ROW FORMAT DELIMITED,则使用本机SerDe。使用SERDE子句创建具有自定义SerDe的表。

STORED AS ORC声明相当于写作

 ROW FORMAT SERDE   'org.apache.hadoop.hive.ql.io.orc.OrcSerde'  
 STORED AS INPUTFORMAT  
 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'   OUTPUTFORMAT  
 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'

您可以使用“存储为”或“行格式服务”语句。您可以参考以下文档以获取更多详细信息:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RowFormats&SerDe

https://cwiki.apache.org/confluence/display/Hive/DeveloperGuide#DeveloperGuide-HiveSerDe

以上是关于Row格式serde是创建Hive表时要使用的必需参数的主要内容,如果未能解决你的问题,请参考以下文章

HIVE Row Formats和SerDe

用于 ORC 或 RC 格式的 Hive Json SerDE

用于ORC或RC格式的Hive Json SerDE

在 Hive 中使用 Regex Serde 创建表返回错误

hive serde 中多分隔符字符串的正则表达式

如何为 Hive 创建架构以使用 SerDe 解析深度嵌套的 json(Azure Application Insights 输出)?