hive表信息,以及查看数据的些

本文详细介绍了在Hive中使用descextended命令查看表信息的方法,并解释了如何利用VirtualColumn虚列获取输入文件名、文件块偏移量以及行偏移量等关键信息。通过实测案例展示了查询结果及其含义,同时提供了查询定位错误源的技巧。
感觉会用户,然后 查看hive表具体信息的时候,可以用 desc extended tablename; (by run)



通常用户在HIVE中用SELECT语句出来结果,无法确定结果是来自哪个文件或者具体位置信息 ,HIVE中考虑到了这点,在Virtual Column虚列 中可以指定三个静态 列:
1.   INPUT__FILE__NAME        map任务 读入File的全路径
2.   BLOCK__OFFSET__INSIDE__FILE       如果是RCFile或者是SequenceFile块压缩格式文件则 显示Block file  Offset,也就是当前快在文件 的第一个字偏移量, 如果是TextFile,显示当前行的第一个 字节在文件中的偏移量
3.   ROW__OFFSET__INSIDE__BLOCK        RCFile和SequenceFile显示row number, textfile显示为0
注: 若要显示 ROW__OFFSET__INSIDE__BLOCK  ,必须设置 set hive.exec.rowoffset=true;

测试:
1. 
table:        test_virtual_columns
InputFormat:         org.apache.hadoop.mapred.TextInputFormat
query:      
select a, INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE,ROW__OFFSET__INSIDE__BLOCK from test_virtual_columns;
result:
[plain]  view plain copy print ?
  1. qweqwe  hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t3.txt        0       0  
  2. dfdf    hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t3.txt        7       0  
  3. sdafsafsaf      hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t3.txt        12      0  
  4. dfdffd  hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t3.txt        23      0  
  5. dsf     hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t3.txt        30      0  
  6. 1       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t1.txt        0       0  
  7. 2       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t1.txt        2       0  
  8. 3       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t1.txt        4       0  
  9. 4       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t1.txt        6       0  
  10. 5       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t1.txt        8       0  
  11. 6       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t1.txt        10      0  
  12. 7       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t1.txt        12      0  
  13. 8       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t2.txt        0       0  
  14. 9       hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t2.txt        2       0  
  15. 10      hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t2.txt        4       0  
  16. 11      hdfs://10.2.6.102/user/hive/warehouse/tmp.db/test_virtual_columns/t2.txt        7       0  

2. 
table:     nginx
InputFormat:      org.apache.hadoop.hive.ql.io.RCFileInputFormat
query:     
select hostname, INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE,ROW__OFFSET__INSIDE__BLOCK from nginx where dt='2013-09-01' limit 10;
result:
[plain]  view plain copy print ?
  1. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       0  
  2. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       1  
  3. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       2  
  4. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       3  
  5. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       4  
  6. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       5  
  7. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       6  
  8. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       7  
  9. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       8  
  10. 10.1.2.162      hdfs://10.2.6.102/share/data/log/nginx_rcfile/2013-09-01/000000_0       537155468       9  

如果碰到有脏数据或者结果异常的时候,可以通过select这三个值来定位出错的原始文件和具体所在位置,很方便。

### 使用 Hive 查询语句查看数据Hive查看数据,最常用的方式是通过 `SELECT` 查询语句执行数据检索操作。可以使用 Hive CLI 或 Beeline 工具连接到 Hive 服务后执行以下语句: ```sql SELECT * FROM your_table_name; ``` 此命令将返回指定中的所有记录,适用于查看的完整数据内容[^2]。 此外,如果需要查看部分数据,可以结合 `WHERE` 条件进行过滤: ```sql SELECT * FROM your_table_name WHERE deptno = 10; ``` 该语句将返回中 `deptno` 字段值为 10 的记录,适用于特定条件下的数据查询[^1]。 ### 使用 Hive CLI 查看结构 除了查看数据,还可以使用 Hive CLI 查看的结构信息。进入 Hive CLI 后,执行以下命令查看字段信息: ```sql DESC your_table_name; ``` 该命令将显示的字段名、数据类型等基本信息。如果需要更详细的结构信息,可以使用格式化显示命令: ```sql DESCRIBE FORMATTED your_table_name; ``` 该命令将显示包括类型、存储格式、分区信息等在内的详细结构信息[^2]。 ### 通过 Cloudera Manager 界面查看 Hive 数据 Cloudera Manager 提供了图形化界面支持 Hive 数据查看。操作步骤如下: 1. 登录 Cloudera Manager 管理控制台。 2. 在左侧导航栏选择 "Hive" 服务。 3. 在 Hive 服务页面中,确保 Hive Metastore 和 HiveServer2 服务正在运行。 4. 通过集成的查询工具(如 Hue)连接 Hive 数据库,执行 `SELECT` 查询语句获取数据: ```sql SELECT * FROM your_table_name; ``` 此方式适用于不熟悉命令行操作的用户,提供可视化界面提升操作便捷性[^2]。 ### 注意事项 - 在执行查询前,确保已选择正确的数据库: ```sql USE your_database_name; ``` 该命令用于切换当前操作的数据库上下文,以确保查询作用在正确的数据集上[^3]。 - Hive 查询语句需要以分号结尾,示语句结束并提交执行[^3]。 - 对于分区,建议结合 `SHOW PARTITIONS` 命令查看可用分区信息后再执行查询: ```sql SHOW PARTITIONS your_partitioned_table; ``` 此命令将列出的所有分区,适用于分析分区数据的分布情况[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值