Hive - EMR Steps

EMR Steps是向集群提交任务的一种方式。在本实验中,我们将使用**HiveQL (HQL)**来操作Hive,这个HQL文件将通过EMR Steps来提交,并将运行结果保存到S3

创建HQL文件

将以下代码保存为ny-taxi.hql,将其上传之前创建的S3桶的files目录下。或通过此链接直接下载:

下载hql文件
CREATE EXTERNAL TABLE ny_taxi (
              vendor_id int,
              lpep_pickup_datetime string,
              lpep_dropoff_datetime string,
              store_and_fwd_flag string,
              rate_code_id smallint,
              pu_location_id int,
              do_location_id int,
              passenger_count int,
              trip_distance double,
              fare_amount double,
              mta_tax double,
              tip_amount double,
              tolls_amount double,
              ehail_fee double,
              improvement_surcharge double,
              total_amount double,
              payment_type smallint,
              trip_type smallint
       )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION "${INPUT}";

INSERT OVERWRITE DIRECTORY "${OUTPUT}"
SELECT * FROM ny_taxi WHERE rate_code_id = 1;

这个 HiveQL 文件将:

  • 创建一张外部表 ny_taxi ,数据源指向之前的tripdata.csv文件。

  • 查询 ny_taxi 表的rate_code_id。

  • 将结果保存到路径${OUTPUT},这个路径在提交step的时候指定。

添加EMR Step

现在将这个HQL文件以步骤的方式提交到EMR。 在EMR集群的界面上,点击添加步骤

image-20210430222854643

步骤类型中,选择Hive程序, 相关配置如下:

  • 脚本S3位置: s3://<YOUR-BUCKET>/files/ny-taxi.hql

  • 输入S3 位置: 不需要指定S3文件完整路径,因为Hive会读取目录下的所有文件。 路径为 s3://<YOUR-BUCKET>/input/

  • 输出 S3位置: 存储Hive执行结果。路径为: s3://<YOUR-BUCKET>/output/hive/

  • 其他配置不用更改,点击 添加

image-20210430223829807

在点击添加后,HQL脚本会接着被执行,在几分钟过后检查S3/output/hive/目录,可以看到结果文件。

image-20210430224224609