行格式 serde 是创建 Hive 表时要使用的强制参数吗?



我在textfile之上创建了一个临时的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 't'
STORED AS orc 
location '/user/hbaseuser/tc1';

然后我使用以下命令将数据导入 hive 表:

insert overwrite table tc1 select * from table tc;

现在ORC文件可在'/user/hbaseuser/tc1'我能够从兽人表中读取。

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

当指定行格式 Serde 时,它会覆盖本机 Serde 并将其用于表创建。 根据文档,

您可以使用自定义 SerDe 或使用本机 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'

您可以使用"存储为"或"行格式Serde"语句。有关更多详细信息,请参阅以下文档:

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

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

最新更新