hive远程模式相关操作
准备工作:
确保mysql已开启
确保hadoop集群正确开启
服务端:
首次开启需要初始化schematool -initSchema -dbType mysql
随后在后台启动metastore服务./hive --service metastore &
客户端:
在配置好hive环境变量的状态下,任意路径输入hive
进入hive交互界面
在shell界面对要分析的数据进行上传操作
创建指定文件夹,将数据上传至hdfs指定目录/college/下
hadoop fs -mkdir -p /college
hadoop fs -put /root/college/loan.csv /college/
hadoop fs -ls /college/
删除文件和目录:
hadoop fs -rm /user/hive_remote/warehouse/t_big24/stu.info
hadoop fs -rm -r -f /college/
在hive交互界面创建数据表并将数据导入到表中
创建table表时用此语句来设置分隔符:
row format delimited fields terminated by ',';
例如:
CREATE TABLE loan(ProsperScore int,Occupation string,LoanStatus string)
row format delimited fields terminated by ',';
- 上传本地数据到hive
load data local inpath '/root/college/loan.csv' into table t_loan;
- 导入hdfs的数据:
load data inpath '/college/loan.csv' into table t_loan;
简单数据分析的语句
分组聚合
select shop,avg(price)
from t_jddata
group by shop
select shop,avg(price) as prices
from t_jddata where price < 5000
group by shop
排序取前十
select shop,price
from t_jddata
order by price desc limit 10;
统计表数据,结果写入文件中
写入本地
insert overwrite local directory '/usr/hive/data'
row format delimited fields terminated by ','
select * from t_text;
写入hdfs
insert overwrite directory '/college'
row format delimited fields terminated by ','
select * from t_text;
注意该写入方法会将指定路径下的所有文件和目录全部覆盖写,因此要写到空的目录下,防止其他信息丢失。
可能会用到的操作
1.若发现hive启动不成功,查看原因可能是由于端口被占用了。把端口关闭即可:
- 查看端口进程,hive 元数据的进程就是 runJar:jps
- 通过jps查看对应的进程 ID:4522 runJar
- 将进程杀死,在次启动即可:kill -9 4522
- 再次启动hive元数据:hive --service metastore &
2.若显示jar包冲突,Root Issue; slf4j在两处找到了jar包。分别是在Hadoop和hive的安装目录。删除一个就好。
- apache-hive-2.1.1-bin/lib/hive-common-2.1.1.jar
3.暂时将hive设置为本地模式,mapreduce的运行速度会较远程模式快一些 set hive.exec.mode.local.auto=true;
4.hive日志路径设置
- 在此路径下更改该文件名:${HIVE_HOME}/conf/hive-log4j2.properties.template
cp hive-log4j2.properties.template hive-log4j2.properties
- 打开文件后修改properties.hive.log.dir的路径,重新启动hive,就会在该路径下生成hive日志文件