本文介绍如何在E-MapReduce集群中开发Hive作业流程。
在Hive中使用OSS
在Hive中读写OSS时,先创建一个external的表。
CREATE EXTERNAL TABLE eusers (
userid INT)
LOCATION 'oss://emr/users';
使用示例
Hive作业流程示例如下:
- 示例1
- 编写如下脚本,保存为hiveSample1.sql文件,并上传至OSS。
上传详情请参见上传文件。
USE DEFAULT; set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set hive.stats.autogather=false; DROP TABLE emrusers; CREATE EXTERNAL TABLE emrusers ( userid INT, movieid INT, rating INT, unixtime STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 'oss://${bucket}/yourpath'; SELECT COUNT(*) FROM emrusers; SELECT * from emrusers limit 100; SELECT movieid,count(userid) as usercount from emrusers group by movieid order by usercount desc limit 50;
- 测试用数据资源
您可以下载如下Hive作业需要的资源,然后将其上传至您OSS对应的目录。
资源下载:公共测试数据。
- 创建作业。
在E-MapReduce中新建一个Hive作业,详情请参见Hive作业配置。
作业内容如下。-f ossref://${bucket}/yourpath/hiveSample1.sql
其中
${bucket}
是您的OSS Bucket,yourpath
是Bucket上的路径,需要您填写实际保存Hive脚本的位置。 - 运行作业
单击运行以运行作业。您可以关联一个已有的集群,也可以自动按需创建一个,然后关联上创建的作业。
- 编写如下脚本,保存为hiveSample1.sql文件,并上传至OSS。
- 示例2
以HiBench中的scan为例。
- 编写如下脚本,上传至OSS。
USE DEFAULT; set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; set mapreduce.job.maps=12; set mapreduce.job.reduces=6; set hive.stats.autogather=false; DROP TABLE uservisits; CREATE EXTERNAL TABLE uservisits (sourceIP STRING,destURL STRING,visitDate STRING,adRevenue DOUBLE,userAgent STRING,countryCode STRING,languageCode STRING,searchWord STRING,duration INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS SEQUENCEFILE LOCATION 'oss://${bucket}/sample-data/hive/Scan/Input/uservisits';
例如存储路径为oss://emr/jars/scan.hive。
- 准备测试数据
您可以通过下面的地址下载作业需要的资源,然后将其上传至您OSS对应的目录。
资源下载:uservisits。
- 在E-MapReduce中创建Hive作业,详情请参见Hive作业配置。
- 运行作业
单击运行以运行作业。您可以关联一个已有的集群,也可以自动按需创建一个,然后关联上创建的作业。
- 编写如下脚本,上传至OSS。