版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hive二次开发学完本课程后,您将能够:了解JDBC客户端开发流程了解Python客户端开发流程了解Hcatalog/WebHcat开发接口Hive二次开发JDBC客户端开发Python客户端开发HCatalog开发接口WebHCat开发接口开发规范规则建议Tableau对接JDBC开发-环境搭建下载客户端包配置开发环境创建Java工程开发应用5,安全版本还需要kerberos机机账号,keytab文件,crb5.conf等3,执行安装包Hive文件夹下hive_install.bat;4,在Eclipse中,依次选择“File>Import>General>ExistingProjectsintoWorkspace>Next>Browse”。
显示“浏览文件夹”对话框后,选择解压出来的“hive-examples”目录,导入工程,单击“Finish”1,在FusionInsightOM页面点击Services>DownloadClient2,解压该客户端到本地硬盘确认待连接的集群是否为安全版本并配置
安全版本下,设置krb5文件路径和zookeeper用户名,及zookeeper客户端是否建立在sasl上。本例中krb5文件为Eclipse工程HiveExample的“conf/krb5.conf”。,//所连接的集群是否为安全版本booleanisSecureVer=true;//设置krb5文件路径if(isSecureVerson){System.setProperty(SECURITY_KRB5_CONF,"conf/krb5.conf");System.setProperty(ZK_SERVER_PRINCIPAL,"");System.setProperty(ZK_SASL_CLIENT,"true");}JDBC开发-代码示例配置ZooKeerper信息
设置ZooKeeper的IP列表和端口之间以”,”分隔。本例中ZooKeeper部署在三个节点上,使用的端口默认为”24002”。,//其中,zkQuorum的"xxx.xxx.xxx.xxx"为集群中Zookeeper所在节点的IP,端口默认是24002StringzkQuorum="xxx.xxx.xxx.xxx:24002,xxx.xxx.xxx.xxx:24002,xxx.xxx.xxx.xxx:24002";}
JDBC开发-代码示例拼接JDBCURL
如果是安全版本需要拼接kerberos用户以及keytab文件路径等信息。,StringuserPrincipal="";StringuserKeyTab="conf/hive.keytab";sBuilder.append(";serviceDiscoveryMode=").append("zooKeeper").append(";=").append("@HADOOP.COM").append(";user.principal=").append(userPrincipal).append(";user.keytab=").append(userKeyTab).append(";");JDBC开发-代码示例定义HQL语句
HQL必须为单条语句,注意HQL不能包含”;”。,//定义HQL,不能包含”;”String[]sqls={"CREATETABLEIFNOTEXISTSemployees_info(idINT,nameSTRING)","SELECTCOUNT(*)FROMemployees_info","DROPTABLEemployees_info“};
JDBC开发-代码示例执行HQL语句(标准JDBC接口),connection=DriverManager.getConnection(url,"","");PreparedStatementstatement=null;try{statement=connection.prepareStatement(sql);statement.execute();}finally{
if(null!=statement){statement.close();}}
JDBC开发-代码示例使用Python进行二次开发前请确认以下事项:确认FusionInsightHD产品Hive组件已经安装,并且正常运行。客户端机器必须安装有Python,其版本不低于2.6.6。客户端机器必须安装有setuptools,其版本不低于5.0。客户端机器的时间与FusionInsightHD集群的时间要保持一致,时间差要小于5分钟。Hive客户端已经成功下载到本地。(下载过程请参考JDBC开发-环境搭建章节)Python开发-环境准备,Python客户端示例程序搭建步骤:进入本地机器的解压后的目录(以下简称解压目录)。进入“Hive”子目录。将“python-examples”文件夹拷贝到客户端机器。进入客户端机器的“python-examples”文件夹。在客户端机器的命令行终端执行pythonsetup.pyinstall。输出以下关键内容表示安装Python客户端成功。Finishedprocessingdependenciesforpyhs2==0.5.0Python开发-工程搭建,示例:Python开发-代码示例,hosts=["xxx.xxx.xxx.xxx","xxx.xxx.xxx.xxx"]conf={"krb_host":"","krb_service":"hive"}try: withHAConnection( hosts=hosts,port=21066,authMechanism= "KERBEROS",configuration=conf)ashaConn: withhaConn.getConnection()asconn: withconn.cursor()ascur: printcur.getDatabases() cur.execute("showtables") printcur.getSchema()foriincur.fetch(): printiexceptException,e:printe1,执行安装包Hive文件夹下hive_install.bat;2,执行成功后,在Eclipse工具中,单击“File>Import>General>ExistingProjectsintoWorkspace>Next>Browse”。显示“浏览文件夹”对话框,选择“HCatalogExamples”,导入工程,单击“Finish”即可在FusionInsightOM页面点击Services>DownloadClient下载客户端demo工程配置开发环境导入Java工程开发应用编译、打包、运行参考示例程序提供的接口编写应用程序。编写完的应用程序需要打包并上传至任意节点。执行以下命令用于配置环境变量信息exportHCAT_HOME=$HIVE_HOME/../HCatalogexportLIB_JARS=$PATHexportHADOOP_CLASSPATH=$HADOOP_PATHHCatalog开发-工程搭建运行:yarn--config$HADOOP_HOME/etc/hadoopjar<YOUR_PATH>/hcat.jarcom.huawei.bigdata.hcatalog.example.HCatalogExample-libjars$LIB_JARSt1t2HCatInputFormat:HCatInputFormat用于提供接口给MapReduce程序,用于直接从Hive表里读取数据。
setInput
setOutputSchemasetInput
setOutputSchemaHCatOutputFormat:
HCatInputFormat用于提供接口给MapReduce程序,用于将数据写入Hive表。setOutputsetSchemagetTableSchemaHCatalog开发接口向Hive提交查询示例:WebHCat开发接口%curl-s-dexecute="select+*+from+pokes;"\-dstatusdir="pokes.output"\'http://43:21055/templeton/v1/hive?=ekoifman'
{"id":"job_201111111311_0005","info":{"stdout":"templeton-job-id:job_201111111311_0005","stderr":"","exitcode":0}}返回结果是JSON格式的:通过Java调用WebHcatRest接口:WebHCat开发接口//generatetokenurl=newURL("");HttpURLConnectionconn=newAuthenticatedURL(authenticator).openConnection(url,newToken);conn.connect();conn.disconnect();System.setProperty("java.security.krb5.conf","D:/krb/krb5.conf");AuthenticatedURL.TokennewToken=newAuthenticatedURL.Token();WebHCatAuthenticatorauthenticator=newWebHCatAuthenticator();//usetokenforauthnc=newAuthenticatedURL(authenticator).openConnection(url,newToken);nc.connect();
通过Java调用WebHcatRest接口:WebHCat开发接口//readdataStringBuildersb=newStringBuilder();is=nc.getInputStream();reader=newBufferedReader(newInputStreamReader(is,"utf-8"));Stringline=null;while((line=reader.readLine())!=null){sb.append(line);}System.out.println(sb);
Hive二次开发开发规范规则建议Tableau对接Hive二次开发-规则建议标题规则获取数据库连接Hive的数据库URL在拼接时已经经过安全认证,所以Hive数据库的用户名和密码为null或者空。connection=DriverManager.getConnection(url,"","");执行HQL执行HQL,注意HQL不能以“;”结尾,以下为正确示例:Stringsql="SELECTCOUNT(*)FROMemployees_info"HQL语法规则之判空判断字段是否为“空”,即没有值,使用“isnull”;判断不为空,即有值,使用“isnotnull”。要注意的是,在HQL中String类型的字段若是空字符串,即长度为0,那么对它进行ISNULL的判断结果是False。此时应该使用col=''"来判断空字符串。Hive二次开发-规则建议标题规则多线程安全登录方式如果有多线程进行login的操作,当应用程序第一次登录成功后,所有线程再次登录时应该使用relogin的方式。login的代码样例:privateBooleanlogin(Configurationconf){booleanflag=false;UserGroupInformation.setConfiguration(conf);try{UserGroupInformation.loginUserFromKeytab(conf.get(PRINCIPAL),conf.get(KEYTAB));
flag=true;}catch(IOExceptione){e.printStackTrace();}returnflag;}Hive二次开发-规则建议标题规则HQL编写之隐式类型转换查询语句使用字段的值做过滤时,不建议通过Hive自身的隐式类型转换来编写HQL。因为隐式类型转换不利于代码的阅读和移植。建议示例:select*fromdefault.tbl_srcwhereid=10001;select*fromdefault.tbl_srcwherename='HuangShuang';不建议示例:select*fromdefault.tbl_srcwhereid='10001';select*fromdefault.tbl_srcwherename=HuangShuang;JDBC超时限制Hive提供的JDBC实现有超时限制,默认是5分钟,用户可以通过java.sql.DriverManager.setLoginTimeout(intseconds)设置,seconds的单位为秒。Hive二次开发-规则建议标题规则开发调试在开发程序时,可通过使用Hive的客户端Beeline先进行调试,检验语句与结果正确性,再部署基于JDBC等的应用程序。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林艺术学院《艺术展览策划》2021-2022学年第一学期期末试卷
- 吉林艺术学院《人体造型训练》2021-2022学年第一学期期末试卷
- 吉林艺术学院《合唱Ⅴ》2021-2022学年第一学期期末试卷
- 吉林艺术学院《版面与图式》2021-2022学年第一学期期末试卷
- 吉林师范大学《羽毛球教学与训练》2021-2022学年第一学期期末试卷
- 2024年大小水库转让协议书模板范本
- 2022年公务员多省联考《申论》真题(四川省市卷)及答案解析
- 2022年云南省公务员录用考试《申论》真题(县乡卷)及答案解析
- 2022年河南省公务员录用考试《行测》真题及答案解析
- 《供应链管理》课件 第3章 供应链网络构建
- 河北省省级联测2023-2024学年高三上学期8月考试英语试题(Word版含答案含听力音频及听力原文)
- 医院医学装备委员会会议汇报
- 如何的提高病区护理满意度-课件
- 正常心脏听诊检查说课稿-课件
- 喜茶运营管理手册和员工操作管理手册
- 建设单位对监理工作要求
- 五年级家长会数学老师发言稿
- 工期及费用索赔与反索赔操作指引
- 新版建筑材料构配件和设备管理制度样本
- 小学国防教育公开课一等奖市赛课获奖课件
- 2023-2023年天津市和平区九年级上学期期中考试数学试卷
评论
0/150
提交评论