📜  Windows 上的 Apache Pig 安装和案例研究(1)

📅  最后修改于: 2023-12-03 15:21:10.629000             🧑  作者: Mango

Windows 上的 Apache Pig 安装和案例研究

Apache Pig 是一个用于大数据分析的工具,它基于 Hadoop 和 MapReduce 架构,能够对PB级别的数据进行分析处理。Pig Latin 是 Pig 的官方脚本语言,其语法类似于 SQL。

在本文中,我们将介绍如何在 Windows 上安装 Apache Pig,并通过一个案例研究来演示如何使用 Pig 进行数据处理。

安装 Apache Pig
  1. 首先需要下载最新版本的 Pig。可以从官网 http://pig.apache.org/ 下载源代码压缩包(pig-0.17.0-src.tar.gz)或二进制压缩包(pig-0.17.0.tar.gz),本文以二进制压缩包为例。

  2. 解压缩 pig-0.17.0.tar.gz 到指定的目录,例如 C:\opt:

> tar -zxvf pig-0.17.0.tar.gz -C /opt
  1. 配置环境变量:将 PIG_HOME 环境变量指向 Pig 的安装目录,并将 %PIG_HOME%\bin 添加到 PATH 环境变量中。可以通过如下命令设置环境变量:
set PIG_HOME=C:\opt\pig-0.17.0
set PATH=%PATH%;%PIG_HOME%\bin
  1. 验证 Pig 是否安装成功:
> pig -version
Apache Pig version 0.17.0 (r1797386) 
compiled Jun 02 2017, 11:47:01

> pig
grunt>
案例研究
数据集介绍

本案例使用的是谷歌地球中提供的 Microsoft Building Footprints 数据集,包含了全球范围内的微软建筑物轮廓线。

数据清洗
  1. 下载并解压 Building Footprints 数据集。

  2. 使用文本编辑器或 Pig Latin 脚本来过滤无效数据,只保留 Building Footprints 数据集中的有效记录。

data = LOAD 'building_footprints.txt' USING PigStorage(',') AS (
  ogc_fid:long,
  wkb_geometry:chararray,
  name:chararray,
  feature_type:chararray,
  source:chararray,
  dataset:chararray,
  _osm_way_id:chararray,
  _osm_point_id:chararray,
  _osm_relation_id:chararray
);

data_filtered = FILTER data BY name IS NOT NULL AND name != '';

假设 Building Footprints 数据集中的每一条记录如下:

1,"0106000020E61000000100000001030000000100000060000000100000000000000000000000000000000000000000000C0F83F400000000C04137CD51C14EC0E03F000000000000E03F000000000000004012E17B11C14EC0F03F0000000000001040051FD51C14EC0F83F4000000000000000000000000000000000000000000"

将每个字段都对应到其名称:

ogc_fid:long,
wkb_geometry:chararray,
name:chararray,
feature_type:chararray,
source:chararray,
dataset:chararray,
_osm_way_id:chararray,
_osm_point_id:chararray,
_osm_relation_id:chararray

数据清洗中的过滤条件为 name 字段非空且非空白。

  1. 保存清洗后的数据集。
STORE data_filtered INTO 'building_footprints_filtered.txt' using PigStorage(',');
数据分析

本案例的数据分析任务是计算每个国家或地区的 Microsoft 建筑物数量。

  1. 载入 Building Footprints 数据集。
data_filtered = LOAD 'building_footprints_filtered.txt' USING PigStorage(',') AS (
  ogc_fid:long,
  wkb_geometry:chararray,
  name:chararray,
  feature_type:chararray,
  source:chararray,
  dataset:chararray,
  _osm_way_id:chararray,
  _osm_point_id:chararray,
  _osm_relation_id:chararray
);
  1. 通过 name 字段中的国家或地区信息,找到每个 Microsoft 建筑物所在的国家或地区。
data_country = FOREACH data_filtered GENERATE name, SUBSTRING(name, 0, INDEXOF(name, ',')) AS country;
  1. 统计每个国家或地区的建筑物数量。
country_group = GROUP data_country BY country;

result = FOREACH country_group GENERATE group AS country, COUNT(data_country) AS building_count;
  1. 将结果保存至文件。
STORE result INTO 'building_count_by_country.txt' USING PigStorage(',');
结果展示

最终的结果文件 building_count_by_country.txt 中包含每个国家或地区的 Microsoft 建筑物数量。其中,数据已按照建筑物数量从高到低排序。

例:

United States,49574
Germany,16169
Canada,6829
United Kingdom,6680
Japan,5629
Australia,4939
France,4871
Netherlands,4653
Belgium,2413
Spain,1877
...(省略)
总结

Pig 是一个用于大数据分析的工具,其脚本语言 Pig Latin 类似于 SQL,易于学习使用。本文介绍了在 Windows 上安装和使用 Pig 的方法,并通过一个案例研究演示了如何使用 Pig 进行数据清洗和分析。