On this page
Hive 中的二进制类型
Motivation:
Hive 旨在处理大数据。通常,在这种情况下,数据中的一行可能非常宽,有数百列。有时,用户只对其中的几列感兴趣,而不想为其余列担心确切的类型信息。在这种情况下,他可能只是将这些列的类型声明为二进制,而 Hive 不会尝试解释这些列。需要注意的重要一件事是,此二进制类型不像其他系统中那样存在于 Blob 类型之后。
Syntax:
create table binary_table (a string, b binary);
{#BinaryDataTypeProposal-Howis'binary'representedinternallyinHive} Hive 内部如何表示“二进制”
Hive 中的二进制类型将在节俭中 Map 为“二进制”数据类型。
“二进制”类型的原始 Java 对象为 ByteArrayRef
“二进制”类型的 PrimitiveWritableObject 是 BytesWritable
Casting:
二进制类型不会隐式转换为任何其他类型。甚至不支持显式强制转换。
Serialization:
通过首先提取字符串的基础字节然后对其进行序列化,来对 Hive 中的字符串进行序列化。二进制类型将搭载它,并将重用相同的代码。
Transform Scripts:
与其他类型一样,二进制数据将以 String 形式发送到转换脚本。 byte []将首先以 Base64 格式编码,然后将创建一个 String 并将其发送到脚本。
Supported Serde:
ColumnarSerde
BinarySortableSerde
LazyBinaryColumnarSerde
LazyBinarySerde
LazySimpleSerde
在“二进制”类型的列上将支持分组依据和联合