好玩的大数据之18:Hive实验1( 使用load data导入数据到外部表和内部表)

好玩的大数据之18:Hive实验1( 使用load data导入数据到外部表和内部表),第1张

            hive

CREATE TABLE IF NOT EXISTS `test_01`(

  `id` int,`name` String,`age` INT,`score` FLOAT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

CREATE external TABLE IF NOT EXISTS `test_02`(

  `id` int, `name` String,`age` INT,`score` FLOAT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

vi /home/hadoop/share/mydata/hive/scoretxt

内容如下:

1,'zhang',20,120

2,'zhao',19,119

3,'qian',18,118

4,'li',21,121

vi /home/hadoop/share/mydata/hive/score02txt

内容如下:

5,'wang',20,120

6,'zhou',19,119

7,'wu',18,118

8,'hu',21,121

load data local inpath '/home/hadoop/share/mydata/hive/scoretxt' overwrite into table test_01;

load data local inpath '/home/hadoop/share/mydata/hive/scoretxt' overwrite into table test_02;

select from test_01;

select from test_02;

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_01

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02

hadoop fs -cat /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_01/scoretxt

hadoop fs -cat /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02/scoretxt

drop table test_01;

drop table test_02;

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb

CREATE TABLE IF NOT EXISTS `test_01`(

  `id` int,`name` String,`age` INT,`score` FLOAT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

CREATE external TABLE IF NOT EXISTS `test_02`(

  `id` int, `name` String,`age` INT,`score` FLOAT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;

select from test_01;

select from test_02;

load data local inpath '/home/hadoop/share/mydata/hive/score02txt' overwrite into table test_01;

load data local inpath '/home/hadoop/share/mydata/hive/score02txt' overwrite into table test_02;

select from test_01;

select from test_02;

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_01

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02

hadoop fs -cat /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02/

注意没有用overwrite

load data local inpath '/home/hadoop/share/mydata/hive/score02txt' into table test_02;

hadoop fs -cat /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02/

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02

注意这次用overwrite

load data local inpath '/home/hadoop/share/mydata/hive/score02txt' overwrite into table test_02;

select from test_02;

hadoop fs -ls /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02

hadoop fs -cat /mylab/soft/apache-hive-312-bin/working/metastorewarehouse/testdbdb/test_02/

不指明类型的情况下,HIVE会默认新建的表为内部表,外部表需要使用external关键字。

当我们删除外部表时,删除的只是元数据,存储数据仍被保留。当我们删除内部表时,元数据和存储数据都被删除。

使用load data *** 作的时候,不管是外部表还是内部表,如果源数据存在于HDFS层,都是数据的移动。即源数据从HDFS存储路径移动到HIVE数据仓库默认路径。

使用load data *** 作的时候,要是使用了overwrite,则情况原来的文件,生成正在load的文件,要是没有用overwrite,则在原来的基础上,增加新加载的文件,要是有重名,hive会自动补足成唯一的文件名

    >

你的问题 是不是能描述的详细一点? 我只能猜测一下,你是不是想集成hive的元数据库,可以实现多用户,一般在这种情况下 建议集成mysql作为hive的元数据库,如果你需要具体的步骤,可以留下邮箱,我之前写过一份关于这方面的材料可以打给你,另外你在集成mysql作为元数据仓库的时候应该注意 hive配置文件里面的 *** 作用户配置 在mysql应该存在,另外在mysql里注意要去的匿名用户,否则会报 权限不足异常

1 相关概念

Hive Metastore有三种配置方式,分别是:

Embedded Metastore Database (Derby) 内嵌模式

Local Metastore Server 本地元存储

Remote Metastore Server 远程元存储

11 Metadata、Metastore作用

metadata即元数据。元数据包含用Hive创建的database、tabel等的元信息。

元数据存储在关系型数据库中。如Derby、MySQL等。

Metastore的作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。

12三种配置方式区别

内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。这个是默认的,配置简单,但是一次只能一个客户端连接,适用于用来实验,不适用于生产环境。

本地元存储和远程元存储都采用外部数据库来存储元数据,目前支持的数据库有:MySQL、Postgres、Oracle、MS SQL Server在这里我们使用MySQL。

本地元存储和远程元存储的区别是:本地元存储不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务。远程元存储需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程元存储的metastore服务和hive运行在不同的进程里。

在生产环境中,建议用远程元存储来配置Hive Metastore。

2 集群规划

本教程Hadoop相关软件全部基于CDH551,用yum安装,系统环境如下:

*** 作系统:CentOS 72

Hadoop 260

Hive110

Spark150

MySQL 56

JDK 18

Maven 333

Scala 210

以上就是关于好玩的大数据之18:Hive实验1( 使用load data导入数据到外部表和内部表)全部的内容,包括:好玩的大数据之18:Hive实验1( 使用load data导入数据到外部表和内部表)、「Hive进阶篇」详解存储格式及压缩方式、hive多用户建表默认数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10198466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存