开发者社区> 问答> 正文

E-MapReduce HadoopHive 开发手册是什么?



在 Hive 中使用 OSS




要在 Hive 中读写 OSS,需要在使用 OSS 的 URI 时加上 AccessKeyId、AccessKeySecret 以及 endpoint。如下示例介绍了如何创建一个 external 的表:

  1. [backcolor=transparent]CREATE EXTERNAL TABLE eusers [backcolor=transparent](
  2. [backcolor=transparent]  userid INT[backcolor=transparent])[backcolor=transparent]
  3. [backcolor=transparent] LOCATION [backcolor=transparent]'oss://emr/users'[backcolor=transparent];

为了保证能正确访问 OSS,这个时候需要修改这个 OSS URI 为:
  1. [backcolor=transparent]CREATE EXTERNAL TABLE eusers [backcolor=transparent](
  2. [backcolor=transparent]  userid INT[backcolor=transparent])[backcolor=transparent]
  3. [backcolor=transparent] LOCATION [backcolor=transparent]'oss://${AccessKeyId}:${AccessKeySecret}@${bucket}.${endpoint}/users'[backcolor=transparent];

参数说明:
[backcolor=transparent]${accessKeyId}:您账号的 accessKeyId。
[backcolor=transparent]${accessKeySecret}:该 accessKeyId 对应的密钥。
[backcolor=transparent]${endpoint}:访问 OSS 使用的网络,由您集群所在的 region 决定,对应的 OSS 也需要是在集群对应的 region。
具体的值参考 OSS Endpoint




使用Tez作为计算引擎




从E-MapReduce产品版本2.1.0+开始,引入了Tez,Tez是一个用来优化处理复杂DAG调度任务的计算框架。在很多场景下可以有效的提高Hive作业的运行速度。
用户在作业中,可以通过设置Tez作为执行引擎来优化作业,如下:
  1. [backcolor=transparent]set[backcolor=transparent] hive[backcolor=transparent].[backcolor=transparent]execution[backcolor=transparent].[backcolor=transparent]engine[backcolor=transparent]=[backcolor=transparent]tez




示例 1




请参见如下步骤:

  1. 编写如下脚本,保存为 hiveSample1.sql,并上传到 OSS 上。[backcolor=transparent] USE DEFAULT[backcolor=transparent];
  2. [backcolor=transparent] [backcolor=transparent]set[backcolor=transparent] hive[backcolor=transparent].[backcolor=transparent]input[backcolor=transparent].[backcolor=transparent]format[backcolor=transparent]=[backcolor=transparent]org[backcolor=transparent].[backcolor=transparent]apache[backcolor=transparent].[backcolor=transparent]hadoop[backcolor=transparent].[backcolor=transparent]hive[backcolor=transparent].[backcolor=transparent]ql[backcolor=transparent].[backcolor=transparent]io[backcolor=transparent].[backcolor=transparent]HiveInputFormat[backcolor=transparent];
  3. [backcolor=transparent] [backcolor=transparent]set[backcolor=transparent] hive[backcolor=transparent].[backcolor=transparent]stats[backcolor=transparent].[backcolor=transparent]autogather[backcolor=transparent]=[backcolor=transparent]false[backcolor=transparent];
  4. [backcolor=transparent] DROP TABLE emrusers[backcolor=transparent];
  5. [backcolor=transparent] CREATE EXTERNAL TABLE emrusers [backcolor=transparent](
  6. [backcolor=transparent]   userid INT[backcolor=transparent],
  7. [backcolor=transparent]   movieid INT[backcolor=transparent],
  8. [backcolor=transparent]   rating INT[backcolor=transparent],
  9. [backcolor=transparent]   unixtime STRING [backcolor=transparent])[backcolor=transparent]
  10. [backcolor=transparent]  ROW FORMAT DELIMITED
  11. [backcolor=transparent]  FIELDS TERMINATED BY [backcolor=transparent]'\t'[backcolor=transparent]
  12. [backcolor=transparent]  STORED AS TEXTFILE
  13. [backcolor=transparent]  LOCATION [backcolor=transparent]'oss://${AccessKeyId}:${AccessKeySecret}@${bucket}.${endpoint}/yourpath'[backcolor=transparent];
  14. [backcolor=transparent] SELECT COUNT[backcolor=transparent](*)[backcolor=transparent] FROM emrusers[backcolor=transparent];
  15. [backcolor=transparent] SELECT [backcolor=transparent]*[backcolor=transparent] [backcolor=transparent]from[backcolor=transparent] emrusers limit [backcolor=transparent]100[backcolor=transparent];
  16. [backcolor=transparent] SELECT movieid[backcolor=transparent],[backcolor=transparent]count[backcolor=transparent]([backcolor=transparent]userid[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]as[backcolor=transparent] usercount [backcolor=transparent]from[backcolor=transparent] emrusers [backcolor=transparent]group[backcolor=transparent] [backcolor=transparent]by[backcolor=transparent] movieid order [backcolor=transparent]by[backcolor=transparent] usercount desc limit [backcolor=transparent]50[backcolor=transparent];

测试用数据资源。您可通过下面的地址下载 Hive 作业需要的资源,然后将其放到您 OSS 对应的目录下。
资源下载:公共测试数据
创建作业。在 E-MapReduce 中新建一个作业,使用类似如下的参数配置:
  1. [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent]f ossref[backcolor=transparent]:[backcolor=transparent]//${bucket}/yourpath/hiveSample1.sql

这里的 ${bucket} 是您的一个 OSS bucket,yourPath 是这个 bucket 上的一个路径,需要您填写实际保存 Hive 脚本的位置。
创建执行计划并运行。创建一个执行计划,您可以关联一个已有的集群,也可以自动按需创建一个,然后关联上这个作业。请将作业保存为“手动运行”,回到界面上就可以点击“立即运行”来运行作业了。




示例 2




HiBench 中的 scan 为例,若输入输出来自 OSS,则需进行如下过程运行 Hive 作业,代码修改源于 AccessKeyId、AccessKeySecret 以及存储路径的设置。请注意 OSS 路径的设置形式为 oss://${accesskeyId}:${accessKeySecret}@${bucket}.${endpoint}/object/path。
请参见如下操作步骤:

  1. 编写如下脚本。[backcolor=transparent] USE DEFAULT[backcolor=transparent];
  2. [backcolor=transparent] [backcolor=transparent]set[backcolor=transparent] hive[backcolor=transparent].[backcolor=transparent]input[backcolor=transparent].[backcolor=transparent]format[backcolor=transparent]=[backcolor=transparent]org[backcolor=transparent].[backcolor=transparent]apache[backcolor=transparent].[backcolor=transparent]hadoop[backcolor=transparent].[backcolor=transparent]hive[backcolor=transparent].[backcolor=transparent]ql[backcolor=transparent].[backcolor=transparent]io[backcolor=transparent].[backcolor=transparent]HiveInputFormat[backcolor=transparent];
  3. [backcolor=transparent] [backcolor=transparent]set[backcolor=transparent] mapreduce[backcolor=transparent].[backcolor=transparent]job[backcolor=transparent].[backcolor=transparent]maps[backcolor=transparent]=[backcolor=transparent]12[backcolor=transparent];
  4. [backcolor=transparent] [backcolor=transparent]set[backcolor=transparent] mapreduce[backcolor=transparent].[backcolor=transparent]job[backcolor=transparent].[backcolor=transparent]reduces[backcolor=transparent]=[backcolor=transparent]6[backcolor=transparent];
  5. [backcolor=transparent] [backcolor=transparent]set[backcolor=transparent] hive[backcolor=transparent].[backcolor=transparent]stats[backcolor=transparent].[backcolor=transparent]autogather[backcolor=transparent]=[backcolor=transparent]false[backcolor=transparent];
  6. [backcolor=transparent] DROP TABLE uservisits[backcolor=transparent];
  7. [backcolor=transparent] CREATE EXTERNAL TABLE uservisits [backcolor=transparent]([backcolor=transparent]sourceIP STRING[backcolor=transparent],[backcolor=transparent]destURL STRING[backcolor=transparent],[backcolor=transparent]visitDate STRING[backcolor=transparent],[backcolor=transparent]adRevenue DOUBLE[backcolor=transparent],[backcolor=transparent]userAgent STRING[backcolor=transparent],[backcolor=transparent]countryCode STRING[backcolor=transparent],[backcolor=transparent]languageCode STRING[backcolor=transparent],[backcolor=transparent]searchWord STRING[backcolor=transparent],[backcolor=transparent]duration INT [backcolor=transparent])[backcolor=transparent] ROW FORMAT DELIMITED FIELDS TERMINATED BY [backcolor=transparent]','[backcolor=transparent] STORED AS SEQUENCEFILE LOCATION [backcolor=transparent]'oss://${AccessKeyId}:${AccessKeySecret}@${bucket}.${endpoint}/sample-data/hive/Scan/Input/uservisits'[backcolor=transparent];

准备测试数据。您可通过下面的地址下载作业需要的资源,然后将其放到您 OSS 对应的目录下。
资源下载:uservisits
创建作业。将步骤 1 中编写的脚本存储到 OSS 中,假设存储路径为oss://emr/jars/scan.hive,在 E-MapReduce 中创建如下作业:

创建执行计划并运行。创建一个执行计划,您可以关联一个已有的集群,也可以自动按需创建一个,然后关联上这个作业。请将作为保存为“手动运行”,回到界面上就可以点击“立即运行”来运行作业了。


展开
收起
nicenelly 2017-10-27 16:13:05 1883 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
阿里云E-MapReduce 立即下载
\"Hadoop的过去现在和未来——从阿里云梯到E-MapReduce \" 立即下载
大数据解决方案构建详解 以阿里云E-MapReduce为例 立即下载