Hive 没有专门的数据格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允许用户指定数据格式。
把hive-0.8.1.tar.gz 放到当前的用户目录下。
解压hive-0.8.1.tar.gz 包 ,tar -vxzf hive-0.8.1.tar.gz
进入 hive-0.8.1 目录 cd hive-0.8.1
进入conf 目录下 复制 并修改 hive-site.xml cp hive-default.xml.template hive-site.xml
修改hive-site.xml 配置,使用mysql 做为 hive的存储元数据的物理位置。
sudo gedit hive-site.xml
主要配置如下:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.46.1:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>password to use against metastore database</description> </property> <!-- 这是一个默认的存放目录--> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property>这些配置很简单,一个是数据路径,一个是数据库驱动,用户名和密码。
第三步:到linux命令下启动hive
cd hive-0.8.1
./bin/hive
就启动了hive
重新启动是 ./bin/hive restart
查看 hive 用户下的mysql ,会新建一个库为hive.同时,有几个表。
创建一个示例表。
hive> CREATE TABLE baobei_info ( > id INT, > owner_id INT);会报一个异常。
hive> CREATE TABLE baobei_info ( > id INT, > owner_id INT); FAILED: Error in metadata: javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes at sun.reflect.GeneratedConstructorAccessor24.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.Util.getInstance(Util.java:381)....
alter database hive character set latin1;然后,再创建一次就可以了,如图:
看一下,创建后的表在mysql 数据库中。
多了几个表,那么哪几个表是存储我新建的表内容呢。
注:存储hive 的hdfs 的目录 具体目录是hdfs://localhost:9000/user/hive/warehouse/
当我们要查看hive目录下的文件只能是上述的命令,因为 user目录下hive 与 当前用户(soliucheng)是同一级目录,可以到50070端口下查看这个文件夹。
当使用./bin/hadoop fs -ls 只能查看到soliucheng 下的hdfs 文件夹。