哪hive 多张表join记载了hive表在hdfs上的存放目录

一:基本用法
1.新建数据库
2.删除数据库
3.删除非空的数据库
4.指定数据库的位置
  LOCATION:指定数据库的位置,不会在系统的默认文件下。
5.在指定数据库中新建表(验证在指定的数据库中可以建表)
6.在页面上观看表
  可以看到在指定的目录下有一张新建的表。
  但是,没有看到指定的数据库。
8.删除一张表
  drop &tab
9.清空一张表
10.加载数据
  1)从本地加载
  2)从HDFS上加载
  3)区别:
    移动。
12.描述一张表
  一张表的一些信息。
13.查看方法
14.描述方法
二:hive的参数的用法
1.到指定的数据库
2.命令行执行SQL  
3.执行文件里的sql
4.启动时指定hive的陪置
5.查看当前的配置,更可以更改配置
三.hive shell中常用的操作
1.访问本地文件系统
2.访问hdfs
四.hive中表的使用
1.创建表的三种方式
  1)第一种方式:普通方式
  2)第二种方式:as select ,子查询方式
  特点:将子查询的数据和结构复制给新的表。
  3)第三种方式:like
  特点:复制表的结构。
2.表的类型
 1)新建员工表
  2)新建部门表
  3)默认表的类型:管理表
  4)问题:文件还有一份,多人使用时,可以通过location指定创建多张表
  看在HDFS中的效果
  没有加载数据,但是依旧可以使用emp的数据,因为使用的目录。
  如果这时候删除掉emp1:
  这时,会删除掉元数据的信息,同时删除在HDFS中表的两个文件夹emp与emp1,但是hive中还保留着emp。
  5)解决方案
  使用外部表。
3.创建外部表
  这时,在HDFS上依旧只有一张dept的元数据表。
4.EXCERANL新建的是外部表
5.外部表的好处
  这时,删掉dept_ext,dept表的元数据依然还在。
  当前的web服务器:    
    .log
    .log     .log     .log
  任务:分析前一天的数据   第一种: /logs/.log
         .log
         .log
         .log
      select * from logs where date='';
      先加载再过滤
  第二种:
/logs/61019.log
         /61020.log
      select * from logs where date='';
      直接加载
7.新建分区表
  这时,HDFS上出现字段
8.多级分区
9.多级分区的效果
阅读(...) 评论()19507人阅读
数据库-Hive(19)
1、执行hive,进入hive窗口
2、执行show databases,查看所有的
3、执行use&origin_ennenergy_ 则使用origin_ennenergy_onecard数据库
4、执行show create table M_BD_T_GAS_ORDER_INFO_H;则可以查看table在hdfs上的存储路径
hive (origin_ennenergy_onecard)&
show create table M_BD_T_GAS_ORDER_INFO_H;
CREATE TABLE `M_BD_T_GAS_ORDER_INFO_H`(
& `fguid` string,&
& `fstationno` string,&
& `fstationname` string,&
& `fgunno` int,&
& `fserialno` int,&
& `fgas` double,&
& `fprice` double,&
& `fmoney` double,&
& `fsumgas` double,&
& `ftradedatetime` date,&
& `fstopdatetime` date,&
& `fsavedatetime` date,&
& `ffueltype` string,&
& `recorddate` date)
ROW FORMAT DELIMITED&
& FIELDS TERMINATED BY '\t'&
STORED AS INPUTFORMAT&
& 'org.apache.hadoop.mapred.TextInputFormat'&
OUTPUTFORMAT&
& 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
& 'hdfs://mycluster/user/hive/warehouse/origin_ennenergy_onecard.db/m_bd_t_gas_order_info_h' & & &-----标红部分为hdfs的路径
TBLPROPERTIES (
& 'COLUMN_STATS_ACCURATE'='true',&
& 'numFiles'='6',&
& 'numRows'='3546198',&
& 'rawDataSize'='',&
& 'totalSize'='',&
& 'transient_lastDdlTime'='')
Time taken: 0.279 seconds, Fetched: 30 row(s)
hive其他命令:
& & & &show functions & & &-----&查看所有的hive函数
& & & &desc tablesname ------&查看table的表结构
感谢 &sborgite&提醒!
访问:879872次
积分:12816
排名:第1282名
原创:423篇
转载:64篇
译文:54篇
评论:101条
文章:48篇
阅读:58332
文章:14篇
阅读:7538
(1)(8)(8)(8)(8)(14)(12)(37)(5)(19)(8)(8)(7)(8)(11)(14)(11)(29)(32)(30)(51)(9)(2)(30)(10)(17)(15)(32)(17)(45)(33)(2)Hive表与外部表 – 过往记忆
欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop。
文章总数:903
浏览总数:12,126,173
评论:3673
分类目录:95 个 注册用户数:3780 最后更新:日
欢迎关注微信公共帐号:iteblog_hadoop大数据猿:bigdata_ai
  写在前面的话,学这么久了,发现目前国内还没有一本完整的介绍的书籍,而且互联网上面的资料很乱,于是我决定写一些关于序列文章,分享给大家。我会在接下来的时间整理有关的资料,如果对Hive的东西感兴趣,请关注本博客。  这几天比较忙,公司里面各种事,所以这几天博客没有时间更新,今天特意抽了一点时间来更新本博客,继续我们的《》。  好了,进入正题。今天我们要探讨的话题是Hive的里面的表与外部表两个概念,以及如何在Hive里面创建表和外部表,它们之间有什么区别等话题。在本博客的文章里面我们谈到了Hive的数据存储模式,里面简单的说到Hive中表以及外部表的简单概念,相信很多读者对这些概念还不是很了解,今天就给大家科普一下,希望对大家有所帮助。  相信很多用户都用过关系型数据库,我们可以在关系型数据库里面创建表(create table),这里要讨论的表和关系型数据库中的表在概念上很类似。我们可以用下面的语句在Hive里面创建一个表:
hive& create table wyp(id int,
& name string,
& age int,
& tele string)
& ROW FORMAT DELIMITED
& FIELDS TERMINATED BY '\t'
& STORED AS TEXTFILE;
Time taken: 0.759 seconds
这样我们就在Hive里面创建了一张普通的表,现在我们给这个表导入数据:
hive& load data local inpath '/home/wyp/data/wyp.txt'
Copying data from file:/home/wyp/data/wyp.txt
Copying file: file:/home/hdfs/wyp.txt
Loading data to table default.wyp
Table default.wyp stats: [num_partitions: 0, num_files: 1,
num_rows: 0, total_size: 67, raw_data_size: 0]
Time taken: 3.289 seconds
hive& select *
Time taken: 0.41 seconds, Fetched: 3 row(s)
  注意:/home/wyp/data/路径是Linux本地文件系统路径;而/home/hdfs/是HDFS文件系统上面的路径!从上面的输出我们可以看到数据是先从本地的/home/wyp/data/文件夹下复制到HDFS上的/home/hdfs/wyp.txt(这个是Hive中的配置导致的)文件中!最后Hive将从HDFS上把数据移动到wyp表中!移到表中的数据到底存放在HDFS的什么地方?其实在Hive的${HIVE_HOME}/conf/hive-site.xml配置文件的hive.metastore.warehouse.dir属性指向的就是Hive表数据存放的路径(在我的店电脑里面配置是/user/hive/warehouse),而Hive每创建一个表都会在hive.metastore.warehouse.dir指向的目录下以表名创建一个文件夹,所有属于这个表的数据都存放在这个文件夹里面。所以,刚刚导入到wyp表的数据都存放在/user/hive/warehouse/wyp/文件夹中,我们可以去看看:
hive& dfs -ls /user/hive/warehouse/
Found 1 items
-rw-r--r-- 3 wyp supergroup
22:23 /user/hive/warehouse/wyp/wyp.txt
看到没,上面的命令就是显示HDFS上的/user/hive/warehouse/wyp中的所有内容。如果需要删除wyp表,可以用下面的命令:
Moved: 'hdfs://mycluster/user/hive/warehouse/wyp' to
trash at: hdfs://mycluster/user/hdfs/.Trash/Current
Time taken: 2.503 seconds
  从上面的输出Moved: 'hdfs://mycluster/user/hive/warehouse/wyp' to trash at: hdfs://mycluster/user/hdfs/.Trash/Current我们可以得知,原来属于wyp表的数据被移到hdfs://mycluster/user/hdfs/.Trash/Current文件夹中(如果你的Hadoop没有取用垃圾箱机制,那么drop table wyp命令将会把属于wyp表的所有数据全部删除!),其实就是删掉了属于wyp表的数据。记住这些,因为这些和外部表有很大的不同。同时,属于表wyp的元数据也全部删除了!我们再来创建一个外部表:
hive& create external table exter_table(
& name string,
& age int,
& tel string)
& location '/home/wyp/external';
Time taken: 0.098 seconds
  仔细观察一下创建表和外部表的区别,仔细的同学们一个会发现创建外部表多了external关键字说明以及location '/home/wyp/external'。是的,你说对了!如果你需要创建外部表,需要在创建表的时候加上external关键字,同时指定外部表存放数据的路径(当然,你也可以不指定外部表的存放路径,这样Hive将在HDFS上的/user/hive/warehouse/文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里):
hive& load data local inpath '/home/wyp/data/wyp.txt' into table exter_
Copying data from file:/home/wyp/data/wyp.txt
Copying file: file:/home/hdfs/wyp.txt
Loading data to table default.exter_table
Table default.exter_table stats: [num_partitions: 0, num_files:
1, num_rows: 0, total_size: 67, raw_data_size: 0]
Time taken: 0.456 seconds
  和上面的导入数据到表一样,将本地的数据导入到外部表,数据也是从本地文件系统复制到HDFS中/home/hdfs/wyp.txt文件中,但是,最后数据不是移动到外部表的/user/hive/warehouse/exter_table文件夹中(除非你创建表的时候没有指定数据的存放路径)!大家可以去HDFS上看看!对于外部表,数据是被移动到创建表时指定的目录(本例是存放在/home/wyp/external文件夹中)!如果你要删除外部表,看看下面的操作:
hive& drop table exter_
Time taken: 0.093 seconds
和上面删除Hive的表对比可以发现,没有输出将数据从一个地方移到任一个地方!那是不是删除外部表的的时候数据直接被删除掉呢?答案不是这样的:
-ls /home/wyp/
Found 1 items
-rw-r--r--
3 wyp supergroup 67
23:21 /home/wyp/external/wyp.txt
你会发现删除外部表的时候,数据并没有被删除,这是和删除表的数据完全不一样的!  最后归纳一下Hive中表与外部表的区别:  1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样;  2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!  那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!(今天就到这吧,已经深夜23:32了,程序员的生活很苦逼的!)本博客文章除特别声明,全部都是原创!禁止个人和公司转载本文、谢谢理解:本文链接:
下面文章您可能感兴趣hadoop(11)
步骤1 :拷贝数据文件 HDFS
[root@master /]# hadoop fs -put /opt/exercise/names.txt /user/root/names.txt
[root@master /]# hadoop fs -ls /user/root/names.txt
-rw-r--r-- 2 root supergroup 78
15:17 /user/root/names.txt
You have new mail in /var/spool/mail/root
步骤2 : 新建文件夹
[root@master /]# hadoop fs -mkdir /user/root/hivedemo
步骤3:新建表, 并指定数据存储位置在 /user/root/hivedemo
hive (default)& create table names(id int , name string)
& ROW FORMAT delimited fields terminated by '\t'
& LOCATION '/USER/ROOT/hivedemo';
Time taken: 3.438 seconds
步骤4:把数据导入hive 外部表的names 表中
hive (default)& load data inpath '/user/root/names.txt'
Loading data to table default.names
Table default.names stats: [numFiles=0, totalSize=0]
Time taken: 1.661 seconds
步骤5: 查询
hive (default)& select *
names.id names.name
4 Danielle
Time taken: 1.38 seconds, Fetched: 9 row(s)
hive (default)& dfs -
hive (default)& dfs -ls /user/hive/
Found 2 items
-rw-r--r-- 2 root supergroup 7-08-24 15:03 /user/hive/warehouse/employees
drwxr-xr-x - root supergroup 0
15:08 /user/hive/warehouse/people_visits
如果drop table names 但是HDFS 里面并不会删除
访问:129468次
积分:2755
排名:第15351名
原创:119篇
评论:29条
(2)(5)(7)(9)(24)(12)(1)(1)(2)(4)(4)(3)(3)(2)(2)(1)(2)(2)(2)(14)(11)(7)(8)他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 查看hive表的hdfs路径 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信