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/
目录,可以看到结果文件。