探索 Hadoop 存储格式
在这一步中,你将深入探索 Hadoop 存储格式,了解它们的优缺点以及适用于不同数据类型和工作负载的场景。
首先,确保你以 hadoop
用户身份登录,在终端中运行以下命令:
su - hadoop
然后,创建一个目录来存放我们的数据文件:
mkdir /home/hadoop/data
接下来,生成一些示例数据文件以供使用:
echo "Alice,25,New York" >> /home/hadoop/data/people.csv
echo "Bob,32,Los Angeles" >> /home/hadoop/data/people.csv
echo "Charlie,19,Chicago" >> /home/hadoop/data/people.csv
现在,让我们探索不同的存储格式及其使用场景:
-
文本文件(Text Files):文本文件是最简单且最易读的格式。它们适用于小型数据集和原型开发,但由于缺乏压缩和模式(schema)支持,在处理大型数据集时效率较低。
-
序列文件(Sequence Files):序列文件是由二进制键值对组成的平面文件。它们支持压缩且可分割,因此适用于记录相对较小的大型数据集。然而,它们缺乏模式支持,处理复杂数据类型时可能较为困难。
-
Avro 文件:Apache Avro 是一种基于行的数据序列化格式,支持模式定义和高效压缩。它非常适合具有复杂数据类型的大型数据集,并在不同编程语言之间提供了出色的互操作性。
-
Parquet 文件:Apache Parquet 是一种面向列的存储格式,提供了出色的压缩和高效的数据跳过(data skipping)能力。它特别适合涉及复杂模式和大量列的分析工作负载。
-
ORC 文件:优化行列存储(Optimized Row Columnar, ORC)格式是另一种面向列的存储格式,专为具有复杂模式的大型数据集优化。它提供了出色的压缩、数据跳过能力以及高效的分析工作负载读取性能。
要进一步探索这些格式,你可以使用 Hadoop 的内置工具或库,例如 Apache Hive 或 Apache Spark。例如,使用 Text 格式创建 Hive 表:
通过执行以下命令启动 Hive shell:
hive
使用 Text 格式创建 Hive 表:
CREATE TABLE people (
name STRING,
age INT,
city STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
将数据加载到表中:
LOAD DATA LOCAL INPATH '/home/hadoop/data/people.csv' INTO TABLE people;
这将创建一个名为 people
的 Hive 表,并使用指定的模式将数据存储为 Text 格式。