用户连接hiveserver2时怎么在cli中指定队列

用户连接hiveserver2时怎么在cli中指定队列,第1张

MapReduce运行队列的指定是通过配置(Configuration)属性“mapreduce.job.queuename”指定的。

大家可能首先想到的是通过“set mapreduce.job.queuename=queueName”的方式来选取运行队列,这在手动任务(临时分析需求)的场景下是不可取的,如前所述,我们为这类似的任务专门分配了相应的队列资源“hive.temporary”,我们必须能够保证用户通过Beeline连接HiveServer2后提交的Hive SQL语句运行在指定的队列“hive.temporary”中,而且用户无法随意更改运行队列,即无法随意更改属性“mapreduce.job.queuename”。

目前HiveServer2使用的权限控制策略为SQL Standard Based Hive Authorization和Storage Based Authorization in the Metastore Server。其中SQL Standard Based Hive Authorization会对Hive终端命令“set”做出限制:只能针对白名单(hive.security.authorization.sqlstd.confwhitelist)中列出的属性进行赋值。白名单默认包含一批属性,其中就包括“mapreduce.job.queuename”,我们需要通过配置文件hive-site.xml或者启动HiveServer2时通过参数“--hiveconf”设置白名单“hive.security.authorization.sqlstd.confwhitelist”的值,排除属性“mapreduce.job.queuename”,使得我们的用户通过Beeline连接至HiveServer2之后,无法随意更改“mapreduce.job.queuename”的值。

既然用户无法更改属性“mapreduce.job.queuename”,那么HiveServer2启动之后属性“mapreduce.job.queuename”必须具有一个默认值,即“hive.temporary”,这样用户通过Beeline连接HiveServer2之后提交的Hive SQL就会运行在队列“hive.temporary”中。那么,接下来的问题就是如果完成这个默认设定?

一般情况下,我们会这样认为,HiveServer2的运行至少涉及到两份配置文件:

(1)Hadoop:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

(2)Hive:hive-site.xml

这些配置文件中的属性值都会“打包”到MapReduce任务的配置属性中去。我们自然会想到在mapred-site.xml或者hive-site.xml中指定“mapreduce.job.queuename”即可,然而实际验证之后发现情况并不是这样的。

(1)在hive-site.xml(mapred-site.xml)中指定“mapreduce.job.queuename”

直接在mysql里从本地文件系统导入数据

mysql》LOAD DATA LOCAL INFILE 'C:\\Users\\asys\\Documents\\Tencent Files\\13174605\\FileRecv\\2015082818' INTO TABLE track_log

FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (注意这里文件是从linux导出的,以\n结尾)

sqoop从hive导出数据到mysql

先在mysql建立表

grant all privileges on *.* to 'root'@'%' identified by 'Nokia123' with grant option

CREATE TABLE `track_log` (

`id` varchar(1000) DEFAULT NULL,

`url` varchar(5000) DEFAULT NULL,

`referer` varchar(5000) DEFAULT NULL,

`keyword` varchar(5000) DEFAULT NULL,

`type` varchar(1000) DEFAULT NULL,

`guid` varchar(1000) DEFAULT NULL,

`pageId` varchar(1000) DEFAULT NULL,

`moduleId` varchar(1000) DEFAULT NULL,

`linkId` varchar(1000) DEFAULT NULL,

`attachedInfo` varchar(1000) DEFAULT NULL,

`sessionId` varchar(1000) DEFAULT NULL,

`trackerU` varchar(1000) DEFAULT NULL,

`trackerType` varchar(1000) DEFAULT NULL,

`ip` varchar(1000) DEFAULT NULL,

`trackerSrc` varchar(1000) DEFAULT NULL,

`cookie` varchar(5000) DEFAULT NULL,

`orderCode` varchar(1000) DEFAULT NULL,

`trackTime` varchar(1000) DEFAULT NULL,

`endUserId` varchar(1000) DEFAULT NULL,

`firstLink` varchar(1000) DEFAULT NULL,

`sessionViewNo` varchar(5000) DEFAULT NULL,

`productId` varchar(1000) DEFAULT NULL,

`curMerchantId` varchar(1000) DEFAULT NULL,

`provinceId` varchar(1000) DEFAULT NULL,

`cityId` varchar(1000) DEFAULT NULL,

`ds` varchar(20) DEFAULT NULL,

`hour` varchar(20) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

然后运行sqoop

jimmy》sqoop export --connect jdbc:mysql://localhost:3306/track_log --username root --password Nokia123 --table track_log --export-dir "/user/hive/warehouse/track_log/ds=20150828/hour=18" --fields-terminated-by '\t' --columns "id, url,referer,keyword,type,guid,pageId,moduleId,linkId,attachedInfo,sessionId,trackerU,trackerType,ip,trackerSrc,cookie,orderCode,endUserId,firstLink,sessionViewNo,productId,curMerchantId,provinceId,cityId,ds ,hour"

注意: 1)--table track_log 是目的mysql的表,库在链接指定(这里库名也叫track_log) --connect jdbc:mysql://localhost:3306/track_log

2) 不能直接从hive表里导出(不能--hive-table),只能从hdfs导出

3)必须指定字段--columns

4)字段分割符号要和hdfs文件里的一致 --fields-terminated-by '\t'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6046415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存