Hadoop 什么是;“行中字段的容器格式”;对于文件格式来说是什么意思?

Hadoop 什么是;“行中字段的容器格式”;对于文件格式来说是什么意思?,hadoop,hive,Hadoop,Hive,来自Hadoop:最终指南: 有两个维度控制配置单元中的表存储:行 格式和文件格式 行格式指示行的格式,以及 存储特定行中的字段。用蜂巢的说法,这一排 格式由SerDe定义,SerDe是用于 序列化程序反序列化程序。当充当反序列化程序时,哪个是 案例查询表时,SerDe将反序列化一行数据 从文件中的字节到配置单元内部使用的对象 对那一行数据进行操作。当用作序列化程序时,哪个是 执行插入或CTA时的情况(请参见第页的“导入数据”) 500),表的SerDe将序列化配置单元的内部表示 将一行数据转换

来自Hadoop:最终指南:

有两个维度控制配置单元中的表存储:行 格式和文件格式

行格式指示行的格式,以及 存储特定行中的字段。用蜂巢的说法,这一排 格式由SerDe定义,SerDe是用于 序列化程序反序列化程序。当充当反序列化程序时,哪个是 案例查询表时,SerDe将反序列化一行数据 从文件中的字节到配置单元内部使用的对象 对那一行数据进行操作。当用作序列化程序时,哪个是 执行插入或CTA时的情况(请参见第页的“导入数据”) 500),表的SerDe将序列化配置单元的内部表示 将一行数据转换为写入输出文件的字节

文件格式指定行中字段的容器格式。这个 最简单的格式是纯文本文件,但有面向行和 也可以使用面向列的二进制格式

“行中字段的容器格式”对于文件格式意味着什么


文件格式与行格式有何不同?

另请阅读关于

配置单元使用SerDe(和文件格式)读取和写入表行

HDFS files --> InputFileFormat --> <key, value> --> Deserializer --> Row object
Row object --> Serializer --> <key, value> --> OutputFileFormat --> HDFS files
或序列文件中的JSON记录:

ROW FORMAT SERDE
'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS SEQUENCEFILE
实际上,一切都是一个Java类。对于初学者来说,非常令人困惑的是DDL中可能存在快捷方式,这允许您编写DDL,而无需为所有格式指定长而复杂的类名。有些类在DDL语言中没有嵌入相应的快捷方式

存储为SEQUENCEFILE

STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.SequenceFileInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.mapred.SequenceFileOutputFormat'
这两个类确定如何读取/写入文件容器

该类决定如何存储和读取行(JSON):

现在,使用行格式和无快捷方式的文件格式的DDL:

ROW FORMAT SERDE
    'org.apache.hive.hcatalog.data.JsonSerDe'
   STORED AS INPUTFORMAT
      'org.apache.hadoop.mapred.SequenceFileInputFormat'
      OUTPUTFORMAT
      'org.apache.hadoop.mapred.SequenceFileOutputFormat'
为了更好地理解这一差异,请查看,您可以深入挖掘并尝试理解实现的方法和基类/接口,查看源代码,在中序列化和反序列化方法

“行中字段的容器格式”是上述DDL中提到的FileInputFormat加上FileOutputFormat。例如,在的情况下,不能指定行格式(分隔或其他SerDe)。ORC文件规定OrcSerDe将仅用于这种类型的文件容器,它有自己的内部格式来存储行和列。实际上,您可以在配置单元中写入存储为ORC的行格式分隔符,但在这种情况下,将忽略行格式分隔符

ROW FORMAT SERDE
'org.apache.hive.hcatalog.data.JsonSerDe'
ROW FORMAT SERDE
    'org.apache.hive.hcatalog.data.JsonSerDe'
   STORED AS INPUTFORMAT
      'org.apache.hadoop.mapred.SequenceFileInputFormat'
      OUTPUTFORMAT
      'org.apache.hadoop.mapred.SequenceFileOutputFormat'