当前位置:   article > 正文

Windows下安装Hive与问题

hiveos 会覆盖windows吗

下载与安装

hive必须依赖hadoop,所以先安装hadoop,可以参考hadoop安装

注意hive一般2.x.x就对应hadoop的2.y.y版本,3.x.x就需要hadoop的3.y.y版本。

hive下载

hive download

hive下载 Hive下载

hive wiki

高版本的hive中没有在windows下的运行的脚本,可以在hive windows运行脚本下载,覆盖对应的bin目录就可以了。

解压:

hive_home

HIVE_HOME目录

hive配置文件目录

hive配置文件目录

Hive依赖Hadoop,记得配置HADOOP_HOME,因为启动基本中会使用到,也可以直接配置到hive-env.sh文件中,但是windows下不会使用这个配置文件,具体的可以看一下运行时候脚本。

特别注意,如果遇到类似下面的错误:

java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init>(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V

把%HADOOP_HOME%\share\hadoop\yarn\lib目录下的disruptor包的版本替换为hive的lib目录下的disruptor的jar包。

在hive3.1.1和hadoop3.0.2就会出现上面的问题。

如果其他问题,检查包冲突,对比源码,添加相应版本jar包,将hadoop依赖的jar包和hive依赖的jar替换为可共用的版本。

配置

hive-site.xml

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <property>
  5. <name>hive.metastore.warehouse.dir</name>
  6. <value>/user/hive/warehouse</value>
  7. <description>hive的数据存储目录,指定的位置在hdfs上的目录</description>
  8. </property>
  9. <property>
  10. <name>hive.exec.scratchdir</name>
  11. <value>/tmp/hive</value>
  12. <description>hive的临时数据目录,指定的位置在hdfs上的目录</description>
  13. </property>
  14. <property>
  15. <name>hive.exec.local.scratchdir</name>
  16. <value>G:/datacenter/hivedata/iotmp</value>
  17. <description></description>
  18. </property>
  19. <property>
  20. <name>hive.downloaded.resources.dir</name>
  21. <value>G:/datacenter/hivedata/iotmp</value>
  22. <description></description>
  23. </property>
  24. <property>
  25. <name>hive.querylog.location</name>
  26. <value>G:/datacenter/hivedata/iotmp</value>
  27. <description></description>
  28. </property>
  29. <property>
  30. <name>hive.server2.logging.operation.log.location</name>
  31. <value>G:/datacenter/hivedata/logs</value>
  32. <description></description>
  33. </property>
  34. <!--mysql-->
  35. <property>
  36. <name>javax.jdo.option.ConnectionURL</name>
  37. <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8</value>
  38. </property>
  39. <property>
  40. <name>javax.jdo.option.ConnectionDriverName</name>
  41. <value>com.mysql.jdbc.Driver</value>
  42. </property>
  43. <property>
  44. <name>javax.jdo.option.ConnectionUserName</name>
  45. <value>hive</value>
  46. </property>
  47. <property>
  48. <name>javax.jdo.option.ConnectionPassword</name>
  49. <value>123456</value>
  50. </property>
  51. <property>
  52. <name>datanucleus.autoCreateSchema</name>
  53. <value>true</value>
  54. </property>
  55. <property>
  56. <name>datanucleus.autoCreateTables</name>
  57. <value>true</value>
  58. </property>
  59. <property>
  60. <name>datanucleus.autoCreateColumns</name>
  61. <value>true</value>
  62. </property>
  63. <property>
  64. <name>hive.metastore.schema.verification</name>
  65. <value>false</value>
  66. <description/>
  67. </property>
  68. </configuration>

hive.metastore.warehouse.dir:hive数据存储目录 hive.exec.scratchdir:hive临时数据目录

元数据仓库,默认使用Derby,可以配置其他数据库,如MySQL javax.jdo.option.ConnectionURL:连接URL javax.jdo.option.ConnectionDriverName:驱动名称 javax.jdo.option.ConnectionUserName:数据库用户名 javax.jdo.option.ConnectionPassword:数据库密码

创建hadoop目录

确保hive配置中的目录在hdfs中已经创建,并且有相应权限

  1. hadoop fs -mkdir /user/
  2. hadoop fs -mkdir /user/hive
  3. hadoop fs -mkdir /user/hive/warehouse
  4. hadoop fs -mkdir /tmp
  5. hadoop fs -mkdir /tmp/hive
  6. #让所用人都又权限修改/tmp目录
  7. hadoop fs -chmod -R 777 /tmp

初始化MySQL

初始化hive存放元数据数据库的表,记得先创建数据库和给对应的用户授权。

hive --service schematool -initSchema -dbType mysql

Hive元数据MySQL表

Hive元数据MySQL表

交互与基本命令

  1. #创建数据库
  2. create shcema dbName
  3. #创建表
  4. create table tableName
  5. # 查看某个数据库
  6. show databases
  7. # 进入某个数据库
  8. use dbName
  9. #查看所有表
  10. show tables
  11. #查看表结构
  12. desc tableName
  13. #显示表名的分区
  14. show partitions tableName
  15. # 创建一个表,结构与另一个表一样
  16. create table tableNameOne like tableNameTwo
  17. # 创建外部表
  18. create external table tableName
  19. # 分区表
  20. create external table tableName (l int) partitoned by (d string)
  21. # 内外部表转化
  22. alter table tableName set TBLPROPROTIES ('EXTERNAL'='TRUE')
  23. alter table tableName set TBLPROPROTIES ('EXTERNAL'='FALSE')
  24. #重命名表
  25. alter table tableName rename to newTableName
  26. # 增加字段
  27. alter table tableName add columns (newCol int comment ‘新增’)
  28. # 修改字段
  29. alter table tableName change colName newColName newType
  30. # 删除字段
  31. alter table tableName replace columns (col1 int,col2 string,col3 string)
  32. # 删除表
  33. drop table tableName
  34. # 删除分区
  35. alter table tableName drop if exists partitions (d='2019-01-01')

注意:删除分区的时候,如果是外部表,则还需要删除文件:

hadoop fs -rm -r -f path

注意创建数据库是create schema,而不是create db

转载于:https://my.oschina.net/u/2474629/blog/3069332

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/399900
推荐阅读
相关标签
  

闽ICP备14008679号