博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive安装使用
阅读量:6266 次
发布时间:2019-06-22

本文共 6306 字,大约阅读时间需要 21 分钟。

hot3.png

 

一、安装

1.解压hive安装包

tar -zxvf apatch-hive-2.1.1-bin.tar.gzmv apatch-hive-2.1.1 hive-2.1.1

2.配置hive环境变量

export HIVE_HOME=/opt/soft/hive-2.1.1export PATH=${PATH}:${HIVE_HOME}/bin 

3.修改配置文件

cp hive-default.xml.template hive-site.xmlcp hive-log4j.properties.template hive-log4j.properties

修改hive-site.xml

system:java.io.tmpdir
/tmp/hive/java
system:user.name
${user.name}
   
javax.jdo.option.ConnectionURL
   
jdbc:mysql://localwork:3306/hive_metadata?createDatabaseIfNotExist=true
   
      JDBC connect string for a JDBC metastore.      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.   
 
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
root
Username to use against metastore database
javax.jdo.option.ConnectionPassword
root
password to use against metastore database
hive.metastore.warehouse.dir
/hive/warehouse
location of default database for the warehouse

修改hive-log4j.properties

可选择性修改

4.在hdfs创建需要目录

hadoop fs -mkdir /hive/warehousehadoop fs -mkdir /tmphadoop fs -chmod -R 755 /hive/warehousehadoop fs -chmod -R 755 /tmp

5.在MySQL数据库创建数据库

CREATE DATABASE `hive_metadata` /*!40100 COLLATE 'utf8_general_ci' */ 

上传MySQL驱动到hive的lib目录下

初始化hive数据库配置到MySQL

./bin/schematool -initSchema -dbType mysql

6.启动hive测试

./bin/hive

182539_KesL_1765168.png

三、hive命令

1.Hive交互式模式

  • quit,exit:  退出交互式shell
  • reset: 重置配置为默认值
  • set <key>=<value> : 修改特定变量的值(如果变量名拼写错误,不会报错)
  • set :  输出用户覆盖的hive配置变量
  • set -v : 输出所有Hadoop和Hive的配置变量
  • add FILE[S] *, add JAR[S] *, add ARCHIVE[S] * : 添加 一个或多个 file, jar, archives到分布式缓存
  • list FILE[S], list JAR[S], list ARCHIVE[S] : 输出已经添加到分布式缓存的资源。
  • list FILE[S] *, list JAR[S] *,list ARCHIVE[S] * : 检查给定的资源是否添加到分布式缓存
  • delete FILE[S] *,delete JAR[S] *,delete ARCHIVE[S] * : 从分布式缓存删除指定的资源
  • ! <command> :  从Hive shell执行一个shell命令
  • dfs <dfs command> :  从Hive shell执行一个dfs命令
  • <query string> : 执行一个Hive 查询,然后输出结果到标准输出
  • source FILE <filepath>:  在CLI里执行一个hive脚本文件

四、数据导入导出

sqoop中文手册:

 1.hive操作:

hive新建表 

create table t_test(id bigint,name string, age int) row format delimited fields terminated by '\t';

导入本地数据

load data local inpath '/opt/hadoop-test/test.txt' overwrite into table t_test;

导入hdfs数据

load data inpath '/data/test.txt' overwrite into table t_test;

hive新建表导入其他表数据

create table t_test2 as select * from t_test;

hive已存在表导入其他表

insert overwrite table t_test2 select * from t_test;

仅复制表结构不导数据

create table t_test3 like t_test;

通过Hive导出到本地文件系统

insert overwrite local directory '/tmp/t_crm/t_test' select * from t_test2

分区(分区字段不能存在新建时表结构定义里边)

create table t_user(id bigint,name string, age int) partitioned by (gender int) row format delimited fields terminated by '\t';

 查询聚合查询等类似参考MySQL

2.sqoop导入MySQL数据到hive

(1)导入MySQL查询结果

注意: 查询结果有重复的,(1)先在hive建表,然后导入; (2)或者查询结果指定别名

hive创建外部表

create external table qf_sale_follow (id string,name string,short_name string,sale_id string,sale_name string,sale_city string,follow_type string,follow_status string,schedule_rate string,abandon_reason string,create_time string,create_user_id string,create_user_name string,detail string) partitioned by (logdate string) row format delimited fields terminated by '\t' location '/qf_dev/qf_sale_follow';

导入hive数据(导入query查询时, 必须携带 where $CONDITIONS, 并且必须指定--target-dir[hdfs 地址] ;如果查询有重复名称,则必须查询结果指定别名,或者先在数据库新建表):

sqoop import --connect jdbc:mysql://localwork:3306/qf_dev --username root --password root --query 'SELECT b.id, b.name, b.short_name, b.sale_id, b.sale_name, b.sale_city, a.follow_type, a.follow_status, a.schedule_rate, a.abandon_reason, a.create_time, a.create_user_id, a.create_user_name, a.detail FROM t_customer_follow_record a JOIN t_customer b ON a.customer_id=b.id where $CONDITIONS ORDER BY a.create_time ASC' --hive-import --hive-overwrite --hive-table qf_sale_follow -m 1  --target-dir /qf_dev/qf_sale_follow2/ --fields-terminated-by '\t';

导入hive(指定表):

sqoop import --connect jdbc:mysql://localwork:3306/qf_dev --username root --password root --table t_workflow_report  --hive-import --hive-overwrite --hive-database qf_dev --hive-table t_workflow_report -m 1  --fields-terminated-by '\t';

注意:target-dir 临时目标目录,一定不要和hive 中 location 位置相同,因为target-dir是第一步MySQL数据导入到hdfs中临时存储目录,导入hdfs成功后,会再把 hdfs数据导入到hive,导入成功后,把临时文件删掉;

空值处理:--null-string '\\N' --null-non-string '\\N'

3.导出hive数据到MySQL

sqoop export --connect jdbc:mysql://localwork:3306/test  --username root --password root --table t_workflow_report --export-dir /hive/warehouse/qf_dev.db/t_workflow_report2 --input-null-string '\\N' --input-null-non-string '\\N' --input-fields-terminated-by '\t';

 

五、遇到问题

1.用sqoop将MySQL数据导入hive

(1)导入 hive IOException running import job: java.io.IOException: Hive exited with status 1

解决办法:

(2)找不到数据库表 生成的jar文件

解决方法: 修改hadoop配置文件 yarn-site.xml

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

(3)org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService: mapreduce_shuffle do

解决方法: 修改hadoop配置文件 yarn-site.xml

    <property>  

        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value>  
    </property>  

(4)root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwxr-xr-x

修改hdfs tmp文件权限, hadoop fs -chmod -R 755 /tmp

(5)hive中导入的数据只有id一行

解决办法: 先在hive中创建表,建立好目录结构后,再执行import导入;

(6)java连接hive  root is not allowed to impersonate root

修改hadoop的配置文件core-site.xml

 <property>

        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
        <description>Allow the superuser oozie to impersonate any members of the group group1 and group2</description>
    </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
        <description>The superuser can connect only from host1 and host2 to impersonate a user</description>
    </property> 
 

 

hiverserver2 : 

转载于:https://my.oschina.net/u/1765168/blog/1583491

你可能感兴趣的文章
jdk目录详解及其使用方法
查看>>
说说自己对RESTful API的理解s
查看>>
通过layout实现可拖拽自动排序的UICollectionView
查看>>
服务器错误码
查看>>
javascript中的面向对象
查看>>
Splunk作为日志分析平台与Ossec进行联动
查看>>
yaffs文件系统
查看>>
Mysql存储过程
查看>>
NC营改增
查看>>
Lua
查看>>
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
查看>>
postgresql 获取刚刚插入的数据主键id
查看>>
C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]
查看>>
05-Vue入门系列之Vue实例详解与生命周期
查看>>
验证码展示
查看>>
浅谈大型web系统架构
查看>>
淘宝大秒系统设计详解
查看>>
linux如何修改登录用户密码
查看>>
Kali Linux 2017中Scapy运行bug解决
查看>>
Python监控进程性能数据并画图保存为PDF文档
查看>>