- 浏览: 347789 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
lvyuan1234:
你好,你那个sample.txt文件可以分享给我吗
hive insert overwrite into -
107x:
不错,谢谢!
hive 表的一些默认值 -
on_way_:
赞
Hadoop相关书籍 -
bupt04406:
dengkanghua 写道出来这个问题该怎么解决?hbase ...
Unexpected state导致HMaster abort -
dengkanghua:
出来这个问题该怎么解决?hbase master启动不起来。
Unexpected state导致HMaster abort
还原建表语句见:http://www.tbdata.org/archives/939
tianzhao@ubuntu:~$ mysql -uhive -p123456
mysql> use hive
mysql> show tables;
+--------------------+
| Tables_in_hive |
+--------------------+
| BUCKETING_COLS |
| COLUMNS |
| DBS |
| PARTITIONS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SORT_COLS |
| TABLE_PARAMS |
| TBLS |
| TBS_PRIV |
| USER |
+--------------------+
17 rows in set (0.00 sec)
下面的没有全部概括所有的字段信息:
org.apache.hadoop.hive.metastore.model.MTable:
表的信息:
public class MTable { // TBLS 表中,TBL_ID是数据库给每个hive表定义的唯一标识。
private String tableName; //表名 TBLS.TBL_NAME
private MStorageDescriptor sd; //location,columns,serDe等信息。 TBLS.SD_ID
private String owner; //表的创建者 TBLS.OWNER
private int createTime; //创建时间 TBLS.CREATE_TIME
private int lastAccessTime; //最后修改时间 TBLS.LAST_ACCESS_TIME
private List<MFieldSchema> partitionKeys; //分区字段信息 PARTITION_KEYS表中。
private Map<String, String> parameters; //相关属性信息,如表的注释属性key就是comment,value就是表的注释,还有表的其他属性信息如:transient_lastDdlTime,last_modified_by,last_modified_time。 TABLE_PARAMS表中
代码如下:
if (crtTbl.getComment() != null) {
tbl.setProperty("comment", crtTbl.getComment());
}
private String tableType; //表的类型 TBLS.TBL_TYPE
}
MTable 存在mysql的TBLS 表中:
metastore/src/model/package.jdo
<class name="MTable" table="TBLS" identity-type="datastore" detachable="true">
<datastore-identity>
<column name="TBL_ID"/>
</datastore-identity>
<index name="UniqueTable" unique="true">
<column name="TBL_NAME"/>
<column name="DB_ID"/>
</index>
<field name="tableName">
<column name="TBL_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="database">
<column name="DB_ID"/>
</field>
<field name="partitionKeys" table="PARTITION_KEYS" >
<collection element-type="MFieldSchema"/>
<join>
<primary-key name="PARTITION_KEY_PK">
<column name="TBL_ID"/>
<column name="PKEY_NAME"/>
</primary-key>
<column name="TBL_ID"/>
</join>
<element>
<embedded>
<field name="name">
<column name="PKEY_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="type">
<column name="PKEY_TYPE" length="767" jdbc-type="VARCHAR" allows-null="false"/>
</field>
<field name="comment" >
<column name="PKEY_COMMENT" length="4000" jdbc-type="VARCHAR" allows-null="true"/>
</field>
</embedded>
</element>
</field>
<field name="sd" dependent="true">
<column name="SD_ID"/>
</field>
<field name="owner">
<column name="OWNER" length="767" jdbc-type="VARCHAR"/>
</field>
<field name="createTime">
<column name="CREATE_TIME" jdbc-type="integer"/>
</field>
<field name="lastAccessTime">
<column name="LAST_ACCESS_TIME" jdbc-type="integer"/>
</field>
<field name="retention">
<column name="RETENTION" jdbc-type="integer"/>
</field>
<field name="parameters" table="TABLE_PARAMS">
<map key-type="java.lang.String" value-type="java.lang.String"/>
<join>
<column name="TBL_ID"/>
</join>
<key>
<column name="PARAM_KEY" length="256" jdbc-type="VARCHAR"/>
</key>
<value>
<column name="PARAM_VALUE" length="4000" jdbc-type="VARCHAR"/>
</value>
</field>
<field name="viewOriginalText">
<column name="VIEW_ORIGINAL_TEXT" jdbc-type="LONGVARCHAR"/>
</field>
<field name="viewExpandedText">
<column name="VIEW_EXPANDED_TEXT" jdbc-type="LONGVARCHAR"/>
</field>
<field name="tableType">
<column name="TBL_TYPE" length="128" jdbc-type="VARCHAR"/>
</field>
</class>
public class MStorageDescriptor { //存在mysql的SDS表中
private List<MFieldSchema> cols; //表的非分区字段,存在mysql的COLUMNS表中。
private String location; // 表的数据在hdfs中的路径 SDS.LOCATION
private String inputFormat;
private String outputFormat;
private boolean isCompressed = false; //是否压缩
private int numBuckets = 1;
private MSerDeInfo serDeInfo; // serDe信息,存在mysql的SERDES表中。
private List<String> bucketCols;
private List<MOrder> sortCols;
private Map<String, String> parameters; //相关参数定义。
}
<class name="MStorageDescriptor" identity-type="datastore" table="SDS" detachable="true">
<datastore-identity>
<column name="SD_ID"/>
</datastore-identity>
<field name="cols" table="COLUMNS" >
<collection element-type="MFieldSchema"/>
<join>
<primary-key name="COLUMNS_PK">
<column name="COLUMN_NAME"/>
</primary-key>
<column name="SD_ID"/>
</join>
<element>
<embedded>
<field name="name">
<column name="COLUMN_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="type">
<column name="TYPE_NAME" length="4000" jdbc-type="VARCHAR" allows-null="false"/>
</field>
</embedded>
</element>
</field>
<field name="location">
<column name="LOCATION" length="4000" jdbc-type="VARCHAR"/>
</field>
<field name="inputFormat">
<column name="INPUT_FORMAT" length="4000" jdbc-type="VARCHAR"/>
</field>
<field name="outputFormat">
<column name="OUTPUT_FORMAT" length="4000" jdbc-type="VARCHAR"/>
</field>
<field name="isCompressed"/>
<field name="numBuckets">
<column name="NUM_BUCKETS" jdbc-type="integer"/>
</field>
<field name="serDeInfo" dependent="true">
<column name="SERDE_ID"/>
</field>
<field name="bucketCols" table="BUCKETING_COLS">
<collection element-type="java.lang.String"/>
<join>
<column name="SD_ID"/>
</join>
<element column="BUCKET_COL_NAME"/>
</field>
<field name="sortCols" table="SORT_COLS">
<collection element-type="MOrder"/>
<join>
<column name="SD_ID"/>
</join>
<element>
<embedded>
<field name="col">
<column name="COLUMN_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="order">
<column name="ORDER" jdbc-type="INTEGER" allows-null="false"/>
</field>
</embedded>
</element>
</field>
<field name="parameters" table="SD_PARAMS">
<map key-type="java.lang.String" value-type="java.lang.String"/>
<join>
<column name="SD_ID"/>
</join>
<key>
<column name="PARAM_KEY" length="256" jdbc-type="VARCHAR"/>
</key>
<value>
<column name="PARAM_VALUE" length="4000" jdbc-type="VARCHAR"/>
</value>
</field>
</class>
public class MSerDeInfo { //存在mysql的SERDES表中
private String name; //默认是NULL
private String serializationLib; //使用的serde类,默认是org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
private Map<String, String> parameters;
}
<class name="MSerDeInfo" identity-type="datastore" table="SERDES" detachable="true">
<datastore-identity>
<column name="SERDE_ID"/>
</datastore-identity>
<field name="name">
<column name="NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="serializationLib">
<column name="SLIB" length="4000" jdbc-type="VARCHAR" allows-null="true"/>
</field>
<field name="parameters" table="SERDE_PARAMS">
<map key-type="java.lang.String" value-type="java.lang.String"/>
<join>
<column name="SERDE_ID"/>
</join>
<key>
<column name="PARAM_KEY" length="256" jdbc-type="VARCHAR"/>
</key>
<value>
<column name="PARAM_VALUE" length="4000" jdbc-type="VARCHAR"/>
</value>
</field>
</class>
非分区字段存在:mysql的COLUMNS表中
分区字段存在:mysql的PARTITION_KEYS表中
// Represent a column or a type of a table or object
public class MFieldSchema { // 字段,普通字段或者分区字段
private String name; //字段名
private String type; // 字段类型
private String comment; //字段注释
}
<class name="MFieldSchema" embedded-only="true" table="TYPE_FIELDS" detachable="true">
<field name="name">
<column name="FNAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="type" >
<column name="FTYPE" length="4000" jdbc-type="VARCHAR" allows-null="false"/>
</field>
<field name="comment" >
<column name="FCOMMENT" length="4000" jdbc-type="VARCHAR" allows-null="true"/>
</field>
</class>
字段类型,字段注释在hive中是支持中文的,编码格式设成utf8。
写入的数据是utf8,在mysql表中存的字段也要是utf8格式,在终端显示也是需要utf8显示。
很重要的一点是mysql默认的字段编码格式是 latin1,如果MySQL没有进行相关设置或者字段的CHARSET没有改过,那么字段编码就是latin1。
hive-site.xml中的javax.jdo.option.ConnectionURL需要加上characterEncoding=UTF-8
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true</value>
<description>JDBC connect string FOR a JDBC metastore</description>
</property>
mysql> SHOW CREATE TABLE COLUMNS;
| Table | Create Table
-----------------------------------------------------------------------------------------------------------------------------+
| COLUMNS | CREATE TABLE `COLUMNS` (
`SD_ID` bigint(20) NOT NULL,
`COMMENT` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`COLUMN_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`TYPE_NAME` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`INTEGER_IDX` int(11) NOT NULL,
PRIMARY KEY (`SD_ID`,`COLUMN_NAME`),
KEY `COLUMNS_N49` (`SD_ID`),
CONSTRAINT `COLUMNS_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
所以如果mysql中的表的字段没有设置成utf8,那么hive写入的字段名和注释就会变成 ??? 乱码。
中文编码格式可以看:
深入分析 Java 中的中文编码问题
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
tianzhao@ubuntu:~$ mysql -uhive -p123456
mysql> use hive
mysql> show tables;
+--------------------+
| Tables_in_hive |
+--------------------+
| BUCKETING_COLS |
| COLUMNS |
| DBS |
| PARTITIONS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SORT_COLS |
| TABLE_PARAMS |
| TBLS |
| TBS_PRIV |
| USER |
+--------------------+
17 rows in set (0.00 sec)
下面的没有全部概括所有的字段信息:
org.apache.hadoop.hive.metastore.model.MTable:
表的信息:
public class MTable { // TBLS 表中,TBL_ID是数据库给每个hive表定义的唯一标识。
private String tableName; //表名 TBLS.TBL_NAME
private MStorageDescriptor sd; //location,columns,serDe等信息。 TBLS.SD_ID
private String owner; //表的创建者 TBLS.OWNER
private int createTime; //创建时间 TBLS.CREATE_TIME
private int lastAccessTime; //最后修改时间 TBLS.LAST_ACCESS_TIME
private List<MFieldSchema> partitionKeys; //分区字段信息 PARTITION_KEYS表中。
private Map<String, String> parameters; //相关属性信息,如表的注释属性key就是comment,value就是表的注释,还有表的其他属性信息如:transient_lastDdlTime,last_modified_by,last_modified_time。 TABLE_PARAMS表中
代码如下:
if (crtTbl.getComment() != null) {
tbl.setProperty("comment", crtTbl.getComment());
}
private String tableType; //表的类型 TBLS.TBL_TYPE
}
MTable 存在mysql的TBLS 表中:
metastore/src/model/package.jdo
<class name="MTable" table="TBLS" identity-type="datastore" detachable="true">
<datastore-identity>
<column name="TBL_ID"/>
</datastore-identity>
<index name="UniqueTable" unique="true">
<column name="TBL_NAME"/>
<column name="DB_ID"/>
</index>
<field name="tableName">
<column name="TBL_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="database">
<column name="DB_ID"/>
</field>
<field name="partitionKeys" table="PARTITION_KEYS" >
<collection element-type="MFieldSchema"/>
<join>
<primary-key name="PARTITION_KEY_PK">
<column name="TBL_ID"/>
<column name="PKEY_NAME"/>
</primary-key>
<column name="TBL_ID"/>
</join>
<element>
<embedded>
<field name="name">
<column name="PKEY_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="type">
<column name="PKEY_TYPE" length="767" jdbc-type="VARCHAR" allows-null="false"/>
</field>
<field name="comment" >
<column name="PKEY_COMMENT" length="4000" jdbc-type="VARCHAR" allows-null="true"/>
</field>
</embedded>
</element>
</field>
<field name="sd" dependent="true">
<column name="SD_ID"/>
</field>
<field name="owner">
<column name="OWNER" length="767" jdbc-type="VARCHAR"/>
</field>
<field name="createTime">
<column name="CREATE_TIME" jdbc-type="integer"/>
</field>
<field name="lastAccessTime">
<column name="LAST_ACCESS_TIME" jdbc-type="integer"/>
</field>
<field name="retention">
<column name="RETENTION" jdbc-type="integer"/>
</field>
<field name="parameters" table="TABLE_PARAMS">
<map key-type="java.lang.String" value-type="java.lang.String"/>
<join>
<column name="TBL_ID"/>
</join>
<key>
<column name="PARAM_KEY" length="256" jdbc-type="VARCHAR"/>
</key>
<value>
<column name="PARAM_VALUE" length="4000" jdbc-type="VARCHAR"/>
</value>
</field>
<field name="viewOriginalText">
<column name="VIEW_ORIGINAL_TEXT" jdbc-type="LONGVARCHAR"/>
</field>
<field name="viewExpandedText">
<column name="VIEW_EXPANDED_TEXT" jdbc-type="LONGVARCHAR"/>
</field>
<field name="tableType">
<column name="TBL_TYPE" length="128" jdbc-type="VARCHAR"/>
</field>
</class>
public class MStorageDescriptor { //存在mysql的SDS表中
private List<MFieldSchema> cols; //表的非分区字段,存在mysql的COLUMNS表中。
private String location; // 表的数据在hdfs中的路径 SDS.LOCATION
private String inputFormat;
private String outputFormat;
private boolean isCompressed = false; //是否压缩
private int numBuckets = 1;
private MSerDeInfo serDeInfo; // serDe信息,存在mysql的SERDES表中。
private List<String> bucketCols;
private List<MOrder> sortCols;
private Map<String, String> parameters; //相关参数定义。
}
<class name="MStorageDescriptor" identity-type="datastore" table="SDS" detachable="true">
<datastore-identity>
<column name="SD_ID"/>
</datastore-identity>
<field name="cols" table="COLUMNS" >
<collection element-type="MFieldSchema"/>
<join>
<primary-key name="COLUMNS_PK">
<column name="COLUMN_NAME"/>
</primary-key>
<column name="SD_ID"/>
</join>
<element>
<embedded>
<field name="name">
<column name="COLUMN_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="type">
<column name="TYPE_NAME" length="4000" jdbc-type="VARCHAR" allows-null="false"/>
</field>
</embedded>
</element>
</field>
<field name="location">
<column name="LOCATION" length="4000" jdbc-type="VARCHAR"/>
</field>
<field name="inputFormat">
<column name="INPUT_FORMAT" length="4000" jdbc-type="VARCHAR"/>
</field>
<field name="outputFormat">
<column name="OUTPUT_FORMAT" length="4000" jdbc-type="VARCHAR"/>
</field>
<field name="isCompressed"/>
<field name="numBuckets">
<column name="NUM_BUCKETS" jdbc-type="integer"/>
</field>
<field name="serDeInfo" dependent="true">
<column name="SERDE_ID"/>
</field>
<field name="bucketCols" table="BUCKETING_COLS">
<collection element-type="java.lang.String"/>
<join>
<column name="SD_ID"/>
</join>
<element column="BUCKET_COL_NAME"/>
</field>
<field name="sortCols" table="SORT_COLS">
<collection element-type="MOrder"/>
<join>
<column name="SD_ID"/>
</join>
<element>
<embedded>
<field name="col">
<column name="COLUMN_NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="order">
<column name="ORDER" jdbc-type="INTEGER" allows-null="false"/>
</field>
</embedded>
</element>
</field>
<field name="parameters" table="SD_PARAMS">
<map key-type="java.lang.String" value-type="java.lang.String"/>
<join>
<column name="SD_ID"/>
</join>
<key>
<column name="PARAM_KEY" length="256" jdbc-type="VARCHAR"/>
</key>
<value>
<column name="PARAM_VALUE" length="4000" jdbc-type="VARCHAR"/>
</value>
</field>
</class>
public class MSerDeInfo { //存在mysql的SERDES表中
private String name; //默认是NULL
private String serializationLib; //使用的serde类,默认是org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
private Map<String, String> parameters;
}
<class name="MSerDeInfo" identity-type="datastore" table="SERDES" detachable="true">
<datastore-identity>
<column name="SERDE_ID"/>
</datastore-identity>
<field name="name">
<column name="NAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="serializationLib">
<column name="SLIB" length="4000" jdbc-type="VARCHAR" allows-null="true"/>
</field>
<field name="parameters" table="SERDE_PARAMS">
<map key-type="java.lang.String" value-type="java.lang.String"/>
<join>
<column name="SERDE_ID"/>
</join>
<key>
<column name="PARAM_KEY" length="256" jdbc-type="VARCHAR"/>
</key>
<value>
<column name="PARAM_VALUE" length="4000" jdbc-type="VARCHAR"/>
</value>
</field>
</class>
非分区字段存在:mysql的COLUMNS表中
分区字段存在:mysql的PARTITION_KEYS表中
// Represent a column or a type of a table or object
public class MFieldSchema { // 字段,普通字段或者分区字段
private String name; //字段名
private String type; // 字段类型
private String comment; //字段注释
}
<class name="MFieldSchema" embedded-only="true" table="TYPE_FIELDS" detachable="true">
<field name="name">
<column name="FNAME" length="128" jdbc-type="VARCHAR"/>
</field>
<field name="type" >
<column name="FTYPE" length="4000" jdbc-type="VARCHAR" allows-null="false"/>
</field>
<field name="comment" >
<column name="FCOMMENT" length="4000" jdbc-type="VARCHAR" allows-null="true"/>
</field>
</class>
字段类型,字段注释在hive中是支持中文的,编码格式设成utf8。
写入的数据是utf8,在mysql表中存的字段也要是utf8格式,在终端显示也是需要utf8显示。
很重要的一点是mysql默认的字段编码格式是 latin1,如果MySQL没有进行相关设置或者字段的CHARSET没有改过,那么字段编码就是latin1。
hive-site.xml中的javax.jdo.option.ConnectionURL需要加上characterEncoding=UTF-8
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true</value>
<description>JDBC connect string FOR a JDBC metastore</description>
</property>
mysql> SHOW CREATE TABLE COLUMNS;
| Table | Create Table
-----------------------------------------------------------------------------------------------------------------------------+
| COLUMNS | CREATE TABLE `COLUMNS` (
`SD_ID` bigint(20) NOT NULL,
`COMMENT` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`COLUMN_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`TYPE_NAME` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`INTEGER_IDX` int(11) NOT NULL,
PRIMARY KEY (`SD_ID`,`COLUMN_NAME`),
KEY `COLUMNS_N49` (`SD_ID`),
CONSTRAINT `COLUMNS_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
所以如果mysql中的表的字段没有设置成utf8,那么hive写入的字段名和注释就会变成 ??? 乱码。
中文编码格式可以看:
深入分析 Java 中的中文编码问题
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
发表评论
-
hive rename table name
2013-09-18 14:28 2594hive rename tablename hive re ... -
hive的distribute by如何partition long型的数据
2013-08-20 10:15 2470有用户问:hive的distribute by分桶是怎么分 ... -
hive like vs rlike vs regexp
2013-04-11 18:53 11208like vs rlike vs regexp r ... -
hive sql where条件很简单,但是太多
2012-07-18 15:51 8734insert overwrite table aaaa ... -
insert into时(string->bigint)自动类型转换
2012-06-14 12:30 8277原表src: hive> desc src; ... -
通过复合结构来优化udf的调用
2012-05-11 14:07 1206select split("accba&quo ... -
RegexSerDe
2012-03-14 09:58 1546官方示例在: https://cwiki.apache.or ... -
Hive 的 OutputCommitter
2012-01-30 19:44 1813Hive 的 OutputCommitter publi ... -
hive LATERAL VIEW 行转列
2011-11-09 14:49 5442drop table lateralview; create ... -
hive complex type
2011-11-08 19:56 1360数据: 1,100|3,20|2,70|5,100 建表: ... -
hive转义字符
2011-10-25 16:41 6238CREATE TABLE escape (id STRING, ... -
hive 两个不同类型的columns进行比较
2011-09-19 13:46 3032select case when "ab1234&q ... -
lateral view
2011-09-18 04:04 0lateral view与udtf相关 -
udf 中获得 FileSystem
2011-09-14 10:28 0在udf中获得FileSystem,需要获得知道fs.defa ... -
hive union mapjoin
2011-09-09 16:29 0union union.q union2.q ... -
hive eclipse
2011-09-08 17:42 0eclipse-templates$ vi .classpat ... -
hive join filter
2011-09-07 23:05 0join16.q.out hive.optimize.ppd ... -
hive limit
2011-09-07 21:02 0limit 关键字: input4_limit.q.out ... -
hive convertMapJoin MapJoinProcessor
2011-09-06 21:17 0join25.q join26 ... -
hive hive.merge.mapfiles hive.merge.mapredfiles
2011-09-06 19:14 0HiveConf: HIVEMERGEMAPFILES ...
相关推荐
通常,Hive元数据默认存储在MySQL或Derby等关系型数据库中。然而,为了适应更复杂的业务需求和更高的性能,我们可以选择将Hive元数据存储在达梦数据库中。本文将详细介绍如何配置Hive metastore以使用达梦数据库。 ...
《深入理解Hive Metastore管理机制》 在大数据处理领域,Hive作为一个基于Hadoop的数据仓库工具,因其易用性和高效性而被广泛应用。其中,Hive Metastore是Hive的核心组件之一,它负责管理和存储元数据,是理解和...
在这个配置中,我们将介绍如何配置 Hive 客户端与 Hive 服务器的连接,包括远程 MySQL 和远程存储 metastore 的配置。 Hive 客户端配置 在 Hive 客户端配置中,我们需要配置 Hive 客户端连接到远程 metastore ...
4. **创建Metastore数据库**:在MySQL中创建用于存储Hive元数据的数据库和用户。 5. **启动Hive**:启动Hive Server2和Hive Metastore服务,可以通过`hive`命令进入交互式shell。 **MySQL介绍** MySQL是一种快速、...
本地元数据存储将元数据保存在运行Hive Metastore服务的同一台服务器上,而远程元数据存储则允许在独立的数据库服务器上管理元数据。MySQL作为流行的开源关系型数据库管理系统,常被用作Hive的远程元数据存储。 ...
此外,Hive通过Hive Metastore服务来管理和存储元数据,包括表的定义、分区信息等,这些元数据通常会存储在关系型数据库中,如MySQL。 “mysql-connector-java-5.1.49.jar”是MySQL数据库的Java连接器,它是MySQL ...
4. **初始化Hive元数据**:启动Hive Metastore服务,首次启动会自动在MySQL中创建所需的表结构。 5. **测试连接**:通过Hive命令行工具连接到MySQL,验证配置是否正确。运行`show tables;`等命令检查是否能正常获取...
在Hive中,当选择MySQL作为元数据存储时,这个驱动文件是必需的,因为它使得Hive Metastore服务能够与MySQL数据库通信,存储表信息、分区信息、列信息等元数据。 知识点详细说明: - **Apache Hive**:Hive是一个...
在Cloudera Manager中配置Hive使用MySQL数据库涉及多个步骤,从卸载CentOS默认MySQL到配置完毕,下面详细说明每一步的知识点。 首先,确保在添加Hive数据库前,系统中不存在先前安装的MySQL版本。使用命令rpm -qa |...
总的来说,MySQL Connector/J 5.1.32 在 Hive 中的应用,让开发者能够利用已有的 MySQL 数据库作为 Hive Metastore,从而实现更高效、可靠的元数据管理,同时充分利用 MySQL 的成熟特性和高可用性。在实际操作中,...
7. 初始化元数据:使用Hive的metastore工具初始化数据库,创建必要的表。 8. 启动Hive:启动Hiveserver2服务,然后通过Hive CLI或者Beeline等客户端工具与Hive交互。 在Hive中,用户可以通过HQL(Hive Query ...
Hive Metastore一般采用数据库系统来存储元数据,支持的数据库包括MySQL、PostgreSQL、Derby等。Metastore服务通常以独立服务的形式运行,这样可以为多个Hive实例提供共享的元数据访问服务,从而实现元数据的集中...
在 Hive 中设置 metastore(元数据存储)连接,可以选择本地 MySQL 实例作为 metastore 服务,这将提高 Hive 的性能和数据一致性。 总的来说,这个安装包提供了在大数据环境中使用 Hive 进行数据处理并与 MySQL ...
<value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true <description>JDBC connect string for a JDBC metastore <name>javax.jdo.option.ConnectionDriverName <value>...
6. **Hive与MySQL的集成**: 在配置Hive时,通过修改`hive-site.xml`配置文件,指定MySQL为元数据存储,并加载`mysql-connector-java-5.1.38.jar`到Hive的类路径中,就可以实现两者间的连接。 7. **HiveQL**: Hive...
在本教程中,我们将探讨如何将SparkSQL与MySQL和Hive集成,以便在大数据处理中实现更高效的数据操作。首先,我们需要确保所有必要的组件都已安装并正确配置。 1. **Java安装**: - Java是所有这些组件的基础,因此...
2. **Hive Metastore**:这部分jar包用于存储Hive的元数据,包括表结构、分区信息、列类型等。元数据可以存储在本地MySQL、PostgreSQL或者远程Thrift服务器上。 3. **Hive SerDes(Serialization/Deserialization)...
2. 解压`apache-hive-1.1.0-cdh5.7.1-bin.tar.gz`,配置`conf/hive-site.xml`以指向MySQL metastore,并设置其他必要的参数,如Hadoop配置目录等。 3. 启动Hive Metastore服务。 4. 初始化Hive Metastore,创建所需...
1. **mysql-connector-java-5.1.43-bin.jar**:这是一个MySQL的JDBC驱动,用于Hive与MySQL数据库之间的通信。在Hive中,元数据通常存储在关系型数据库如MySQL中,以便管理和检索。因此,我们需要把这个JDBC驱动添加...
- **HiveMetastoreClientService**: 提供与Hive Metastore交互的能力,用于元数据管理。 ### 操作与验证 1. **配置验证**:确保NiFi、MySQL、Hive环境正常运行,所有需要的连接和配置参数(如数据库URL、用户名、...