-
java调用hive需要的jar
2017-03-17 16:44:01java调用hive需要的jar -
shell中循环调用hive sql 脚本的方法
2020-09-15 04:06:01今天小编就为大家分享一篇shell中循环调用hive sql 脚本的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
利用crontab 调用hive
2015-04-10 13:58:21 -
Java调用Hive的操作
2016-05-16 11:08:40如何在Java中调用Hive的操作步骤如下: 1、启动Hive远程服务: 命令: hive --service hiveserver2 & 启动成功,命令框出现以下界面: 2、在Eclipse中创建Hadoop 项目,导入Hive的必须包 Hive的必须包如下...如何在Java中调用Hive的操作步骤如下:
1、启动Hive远程服务:
命令: hive --service hiveserver2 &
启动成功,命令框出现以下界面:
2、在Eclipse中创建Hadoop 项目,导入Hive的必须包
Hive的必须包如下:
hive-exec-2.0.0.jar
hive-jdbc-2.0.0.jar
hive-service-2.0.0.jar
httpclient-4.4.jar
httpcore-4.4.jar
3、编写Java调用Hive的相关函数,代码如下:
package com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class HiveTestCase {
public static void query(Statement stmt) throws Exception {
String querySQL = "select a.* from java_test a";
ResultSet res = stmt.executeQuery(querySQL); // 执行查询语句
while (res.next()) {
System.out.print("id:" + res.getString("id") + " ");
System.out.println("name:" + res.getString(2) + " ");
}
}
public static void create(Statement stmt) throws Exception {
String createSQL = "create table java_test (id string, name string) row format delimited fields terminated by '\t' ";
boolean bool = stmt.execute(createSQL);
System.out.println("创建表是否成功:" + bool);
}
public static void drop(Statement stmt) throws Exception {
String dropSQL = "drop table java_test";
boolean bool = stmt.execute(dropSQL);
System.out.println("删除表是否成功:" + bool);
}
public static void load(Statement stmt) throws Exception {
String loadSQL = "load data local inpath '/home/hadoop/test' into table java_test ";
boolean bool = stmt.execute(loadSQL);
System.out.println("导入数据是否成功:" + bool);
}
public static void main(String[] args) throws Exception {
Class.forName("org.apache.hive.jdbc.HiveDriver");
Connection con = DriverManager.getConnection(
"jdbc:hive2://192.168.26.131:10000/test", "", "");
Statement stmt = con.createStatement();
drop(stmt); // 执行删除语句
create(stmt); // 执行建表语句
load(stmt); // 执行导入语句
query(stmt); // 执行查询语句
}
}4、如果出现错误:User: hadoop is not allowed to impersonate
解决:在hive-site.xml文件中添加一下配置:
<property>
<name>hive.metastore.sasl.enabled</name>
<value>false</value>
<description>If true, the metastore Thrift interface will be secured with SASL.
Clients must authenticate with Kerberos.</description>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
</property>
参考链接:
http://stackoverflow.com/questions/36909002/authorizationexception-user-not-allowed-to-impersonate-user
5、操作过程存在的疑问:
执行以上HQL语句,都能在Hive中成功执行创建表、删除表、导入数据等,但是函数返回的布尔值为什么为 false 呢?
解答:
这个execute方法执行一个sql语句并且指向第一个返回值。
返回值:true表示第一个返回值是一个ResultSet对象;false表示这是一个更新个数或者没有结果集。 -
Java调用Hive-metastore接口
2018-12-05 18:09:42Java调用Hive-metastore接口 需求:对hive的元数据进行查询,之前师姐的实现方法是通过对MySql的hive元数据数据库操作,进而实现查询。但是该方法太过于麻烦和复杂,在网上查询之后发现,hive提供Hive-metastore ...需求:对hive的元数据进行查询,之前师姐的实现方法是通过对MySql的hive元数据数据库操作,进而实现查询。但是该方法太过于麻烦和复杂,在网上查询之后发现,hive提供Hive-metastore service,能比较完美的解决这一需求。
1. 为什么有Hive-metastore service
许多第三方框架需要使用hive 的元数据如spark,所有hive需要开发Hive-metastore service的服务接口。
同理Hive-metastore service提供了JAVA的jar,给java程序调用
2. JAVA怎么用Hive-metastore
去maven仓库搜索hive metastore,能找到对应的jar包。之间在maven项目中引入hive metastore的依赖。
如下面所示:
- 依赖
<!--hive-metastore--> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-metastore</artifactId> <version>2.3.4</version> </dependency>
- java连接Hive-metastore service代码
//HiveMetaStore的客户端 private HiveMetaStoreClient hiveMetaStoreClient; /** * 功能描述: * 设置HiveJDBC的数据源 */ private void setHiveMetaStoreConf(DbInform dbInform) { HiveConf hiveConf = new HiveConf(); hiveConf.set("hive.metastore.uris",dbInform.getDbMetastoreUrl()); try { //设置hiveMetaStore服务的地址 this.hiveMetaStoreClient = new HiveMetaStoreClient(hiveConf); //当前版本2.3.4与集群3.0版本不兼容,加入此设置 this.hiveMetaStoreClient.setMetaConf("hive.metastore.client.capability.check","false"); } catch (MetaException e) { e.printStackTrace(); } catch (TException e) { e.printStackTrace(); } }
注意:
-
hiveConf.set("hive.metastore.uris",dbInform.getDbMetastoreUrl());
-
其中hiveConf的配置对象也可以通过配置文件读取配置。
例如,hive-site.xml中的配置如下
<configuration> <property> <name>hive.metastore.uris</name> <value>thrift://110.131.23.14:9083</value> </property> </configuration>
hiveConf中引入:
hiveConf.addResource("hive-site.xml")
-
“hive.metastore.uris”属性是设置Hive-metastore service的地址,地址格式如:thrift://110.131.23.14:9083(默认端口9083,必须是hive集群中Hive-metastore service所在的ip)。
-
-
hiveMetaStoreClient.setMetaConf("hive.metastore.client.capability.check","false");
由于我的集群上的hive是3.0版本,但是hive-jdbc的3.0jar包会与spring boot2.0出现包冲突,导致spring boot无法启动。所以无奈之下,hive-jdbc使用了2.3.4版本,因此HiveMetaStore的jar版本也必须使用2.x.x的版本,不然会出现找不到包的错误。而使用2.x.x的版本与集群3.0版本连接会提示客户端版本太低的错误,控制台提示配置hive.metastore.client.capability.check为fasle。特别提示:该配置写在配置文件中似乎没有作用。
3. Hive-metastore的java接口
// 由数据库的名称获取数据库的对象(一些基本信息) Database database= this.hiveMetaStoreClient.getDatabase(dbName); // 根据数据库名称获取所有的表名 List<String> tablesList = this.hiveMetaStoreClient.getAllTables(dbName); // 由表名和数据库名称获取table对象(能获取列、表信息) Table table= this.hiveMetaStoreClient.getTable(dbName,tableName); // 获取所有的列对象 List<FieldSchema> fieldSchemaList= table.getSd().getCols(); // 关闭当前连接 this.hiveMetaStoreClient.close();
注意:使用完之后关闭连接
this.hiveMetaStoreClient.close();
-
使用shell调用hive sql实现hive表小文件合并
2020-07-22 18:25:44之前文章写到用sparksql实现hive表小文件合并,这里使用一下用shell调用hivesql来合并hive表文件,思路是一样的 #!/bin/bash source /etc/profile #################################################################...之前文章写到用sparksql实现hive表小文件合并,这里使用一下用shell调用hivesql来合并hive表文件,思路是一样的
#!/bin/bash source /etc/profile ################################################################################### #purpose:hive 表批量合并小文件 #author: #date:2018/08/11 #date: 2019/03/08 由原来循环串行跑更新为通过并行掉函数,并行跑 ################################################################################### runMerge() { tbs=$1 pcdate=`date -d"1 day ago" +"%Y%m%d"` echo ">>>>>>>>>>$tbs 合并分区日期"\'$pcdate\' for tb in $tbs do tmp_tb=$tb'_tmp' #构建字段列表 a1=`hive -e "desc $tb"` echo $a1 a=`hive -e "desc $tb"|awk 'NR==1,NR==$(NF-0){print $1}'` echo "$tb 字段列表:$a" b=`echo $a|sed 's/day # # day/ /g'` c1=`echo $b|sed 's/ /,/g'` c=`echo $c1|sed 's/timestamp/\`timestamp\`/g'` for i in \'$pcdate\' do echo "开始合并$tb....." echo "select $c from $tb where day = ${i}" hive -e " set hive.merge.mapfiles = true; set hive.merge.mapredfiles = true; set hive.merge.tezfiles=true; set hive.merge.size.per.task = 256000000; set hive.merge.smallfiles.avgsize=16000000 ; -- 将小文件数据先放入一个临时分区 insert overwrite table $tb partition (day = '19700101') select $c from $tb where day = ${i}; -- 将原来的小文件分区删掉 alter table $tb drop if exists partition(day = ${i}); -- 将临时分区,rename到正式大文件分区 alter table $tb partition (day = '19700101') rename to partition(day = ${i}); -- 将临时分区删掉 alter table $tb drop if exists partition(day = '19700101'); " if [ $? != 0 ];then currenttime=`date +'%Y-%m-%d-%H:%M:%S'` msg="[$currenttime]$tb小文件合并出问题" sh /opt/edw/bin/oozie-job-dingtalk-warn.sh $msg break fi echo $tb"小文件合并完成..." #将表名替换成表路径 tbfilepath=${tb//'.'/'.db/'} fileday=${i//"'"/""} #删除合并过程中产生中间文件夹 hadoop fs -test -e /user/hive/warehouse/$tbfilepath/day=$fileday/.hive-staging_hive_* if [ $? == 0 ] then hadoop fs -rm -r /user/hive/warehouse/$tbfilepath/day=$fileday/.hive-staging_hive_* fi done done } #并行跑 starttime=`date +'%Y-%m-%d %H:%M:%S'` runMerge 'databasename1.tablename1' & runMerge 'databasename2.tablename2' & runMerge 'databasename3.tablename3' wait endtime=`date +'%Y-%m-%d %H:%M:%S'` start_seconds=$(date --date="$starttime" +%s) end_seconds=$(date --date="$endtime" +%s) echo "$starttime $endtime $sqlscript本次运行时间: "$((end_seconds-start_seconds))"s"
-
hive变量调用 hive和shell hdfs命令交互调用 hiverc预定义初始化
2017-05-22 16:13:32hive变量调用 hive和shell hdfs命令交互调用 hiverc预定义初始化 1 hive使用外部变量: 分为4种情况, hive中引用外部变量: 在代码中引用时使用${...}; 方式1: [root@h2single bin... -
Oozie调用hive案例——Oozie4.3.1
2019-01-25 12:24:32Oozie调用hive案例——Oozie4.3.1 oozie调用hive准备三个文件 job.properties、script.q、workflow.xml 1.job.properties # 当你配置了dfs高可用,fs.defaultFS参数对应的名字, # 否者写hdfs://deptest1:8020或者... -
hive sql 怎么实现循环_shell中循环调用hive sql 脚本的方法
2020-12-20 18:49:27shell中循环调用hive sql 脚本的方法脚本tt.sh的内容如下:#!/bin/bashparams=$1for param in $paramsdoecho $paramdone运行方式为:sh tt.sh "1 2 3 4 5"输出为:12345所以参考上面的命令,可以把hql的脚本写为如下... -
shell调用hive及执行HQL
2014-04-04 16:43:18脚本是通过shell调用hive及执行HQL hive <<EOFselect * from smit_opentime limit 10;exit;EOF -
java调用hive如何按照orcfile格式写入
2015-05-12 09:38:55各位大佬,咨询个问题。 通过java调用hive的api往HDFS写入数据的话,如何按照ORCfile的格式写入的? -
使用python调用hive的hql及执行Linux命令
2019-12-23 15:02:07使用python调用hive的hql及执行Linux命令 直接上代码 #!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import subprocess from Calendar import * import time class HiveTask: def __init__... -
通过shell访问hive_【HIVE】SHELL调用Hive查询
2021-01-11 19:16:16执行HiveSQL有两种方式,一种是HiveServer1,另一种是HiveServer2的JDBC方式,两种各有优劣:beeline -u jdbc:hive2://192.168.0.131:10001 -n hive -p hive -f "$scriptPath"hive -f "$scriptPath"$HIVE_HOME/bin/... -
Shell调用Hive传参、回传并处理海量数据分区脚本实践
2019-05-30 20:51:02先度娘了一下,发现互联网上对于Shell调用Hive传参、回传,处理数据的综合脚本案例基本没有,现写一个,给大家参考。 #!/usr/bin/env bash HIVE_HOME="C:/apache-hive-2.3.5-bin" #项目是离线数据处理,... -
Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive
2019-04-18 18:16:59Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive -
java程序调用hive查询的一个异常
2016-08-24 14:39:23最近在java程序中调用hive做查询时,碰到一个异常,被困扰了许久,经过几番调试,逐步把问题定位清楚。 在异常描述前先给出异常信息:java.sql.SQLException: Error while processing statement: FAILED: Execution... -
hadoop安装hive及java调用hive
2017-08-17 21:51:001、安装hive 在安装hive前,请确保已经安装好了hadoop,如未安装,请参考centoos 安装hadoop集群进行安装; 1.1、下载,解压 下载hive2.1.1:... -
通过Crontab调用HIVE语句对ElasticSearch索引读写操作
2015-08-20 14:31:40通过Crontab实现自动调用HIVE语句对ElasticSearch的索引进行读写操作 -
使用presto调用hive
2017-03-28 14:48:18启动hive metastore服务 hive --service hivestore & 关于最后的一个&,告诉小白一下是后台运行的意思 presto配置使用hive插件 presto所在的文件中etc(自建)的catalog(自建)中hive.properties(自建文件)中... -
java调用hive
2017-06-22 14:49:421 pom.xml dependency> groupId>org.apache.hadoopgroupId> artifactId>hadoop-commonartifactId> version>2.7.2version> -
[HIVE] shell调用hive客户端导致nohup后台进程stopped
2020-06-16 12:24:32nohup启动java进程调用shell执行hive客户端命令导致nohup进程stopped,java进程消失了。 环境变量增加如下之后解决。 export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Djline.terminal=jline.... -
java调用hive api
2016-03-24 10:52:32基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似Web... -
Java 使用 JDBC 调用 Hive 出现 The query did not generate a result set!
2018-03-14 20:09:22使用Java通过jdbc调用Hive,执行hive sql时出现如下异常: Caused by: org.iq80.leveldb.DBException: java.sql.SQLException: The query did not generate a result set! at ... -
Spark 调用 hive使用动态分区插入数据
2019-07-24 17:11:39spark 调用sql插入hive 失败 ,执行语句如下 spark.sql("INSERT INTO default.test_table_partition partition(province,city) SELECT xxx,xxx md5(province),md5(city) FROM test_table") 报错如下,需动态插入... -
java使用jdbc调用hive出现The query did not generate a result set!
2016-11-23 18:51:43使用java通过jdbc调用hive,执行hive sql时出现如下异常: Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.... -
Java 调用Hive 自定义UDF
2017-08-18 00:12:05Hive 具有一个可选的组件叫做HiveServer,它允许通过在一定的端口访问hive. 将自定义的UDF的jar拷贝到安装的hive服务器中(如 /home/Hadoop下) 具体的不啰嗦了,看代码吧! package com.hive.client; impor -
python调用spark和调用hive_本地Spark连接远程集群Hive(Scala/Python)
2020-12-10 18:58:05背景很多时候,我们在编写好Spark应用程序之后,想要读取Hive表测试一下,但又不想操作 (打jar包——>上传集群——>spark-submit) 这些步骤时,那我们就可以在本地直连Hive,直接运行你的Spark应用程序中的... -
通过shell访问hive_如何用shell调用hive
2020-12-18 18:41:13来源于.../bin/sh#参数传递source /etc/profile;source ~/.bash_profile;BASEDIR=`dirname $0`cd $BASEDIR#classpath优先当前目录CLASSPATH=$BASEDIR#classpath其次是con...
-
Single-shot cross-correlator for pulse-contrast characterization of high peak-power lasers
-
STM32CubeMX Nucleo F767ZI 教程(3) 串口调试工具 Letter Shell App.zip
-
PHP连接Mysql,实现基本的增、删、改、查——用户管理系统
-
Qt and Qt Charts
-
python办公自动化技巧
-
pytest失败重跑插件: pytest-rerunfailures使用与坑(全网独家精华)
-
基于电力大数据调度云的优化分析
-
第13章 图像轮廓 --直方图处理
-
基于能量分布识别干涉条纹相位畸变的方法
-
高精度位移测量系统的硬件在环仿真
-
读源码的方法
-
微信公众号2021之网页授权一学就会java版
-
2021-1-26 Pool_Lexer_Parser.zip
-
2021-01-27
-
Experimental methods for warm dense matter research
-
相对平行直线扫描计算机分层成像研究
-
知了课堂课件.rar
-
算法导论二(排序和顺序统计量)——编程大牛的必经之路
-
Kotlin协程极简入门与解密
-
上海超强超短激光实验装置