EMR Steps是向集群提交任务的一种方式。在本实验中,我们将使用**HiveQL (HQL)**来操作Hive,这个HQL文件将通过EMR Steps来提交,并将运行结果保存到S3
将以下代码保存为ny-taxi.hql,将其上传之前创建的S3桶的files目录下。或通过此链接直接下载:
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的时候指定。
现在将这个HQL文件以步骤的方式提交到EMR。 在EMR集群的界面上,点击添加步骤:

在步骤类型中,选择Hive程序, 相关配置如下:
脚本S3位置:  s3://<YOUR-BUCKET>/files/ny-taxi.hql
输入S3 位置:  不需要指定S3文件完整路径,因为Hive会读取目录下的所有文件。 路径为 s3://<YOUR-BUCKET>/input/
输出 S3位置:  存储Hive执行结果。路径为: s3://<YOUR-BUCKET>/output/hive/
其他配置不用更改,点击 添加

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