Hive3:常用的虚拟列(Virtual Columns)

一、作用

虚拟列是Hive内置的可以在查询语句中使用的特殊标记,可以查询数据本身的详细参数

Hive目前可用3个虚拟列

  • INPUT__FILE__NAME:显示数据行所在的具体文件
  • BLOCK__OFFSET__INSIDE__FILE:显示数据行所在文件的偏移量
  • ROW__OFFSET__INSIDE__BLOCK:显示数据所在HDFS块的偏移量
    此虚拟列需要设置:SET hive.exec.rowoffset=true 才可使用

二、实操

INPUT__FILE__NAME:通过这个虚拟列,我们可以确定数据所在文件位置(HDFS中的位置)

sql 复制代码
SET hive.exec.rowoffset=true
SELECT orderid , INPUT__FILE__NAME, BLOCK__OFFSET__INSIDE__FILE, ROW__OFFSET__INSIDE__BLOCK FROM itheima.orders o ;

BLOCK__OFFSET__INSIDE__FILE:偏移量,就是每条数据,在文件中的起始index下标。

比如上图的第302条数据,显示,165

这里我用Java程序验证一下order2.txt文件的偏移量:
代码

java 复制代码
package com.atguigu.mapreduce.test;

import java.io.IOException;
import java.io.RandomAccessFile;

public class FileOffsetReader {
	public static void main(String[] args) {
		String filePath = "C:\\Users\\admin\\Desktop\\orders\\order2.txt";
		int offset = 0; // 指定偏移量

		try (RandomAccessFile file = new RandomAccessFile(filePath, "r")) {
			// 将文件指针移动到指定偏移量
			while (true && offset<=200){
				file.seek(offset);
				int ch = file.read(); // 读取偏移量处的字符(或使用readByte()读取字节)
				if (ch != -1) {
					System.out.println("字符偏移量 " + offset + " 处的字符: " + (char) ch);
					offset++;
				} else {
					System.out.println("已到达文件末尾");
					break;
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

偏移量,就是行数据的起始下标。
注意,一个中文占据3个偏移量数值,所以,偏移量和string length的含义还是有所不同!


ROW__OFFSET__INSIDE__BLOCK:数据块偏移量

即可以通过该字段,查看数据所在HDFS中块的信息。

三、总结

三个虚拟字段都很实用。

我们如果发现数据有问题,可以通过这三个字段,定位到HDFS中数据的具体位置。从而,进行问题溯源。

相关推荐
Q26433650232 小时前
【有源码】基于文本挖掘的消费者金融投诉主题发现与风险预警研究,基于Python的CFPB消费者投诉数据可视化分析系统
大数据·hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计
Q26433650236 小时前
【有源码】基于机器学习的商场商铺运营分群与可视化分析研究 基于Spark的商场商铺经营效率分析与可视化
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·毕业设计
Gl�ria6 小时前
Hadoop MapReduce / Hive 场景:ReduceTask 热点 Key 排查
运维·hadoop·数据倾斜
Q26433650231 天前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
Q26433650231 天前
【有源码】基于 Hadoop 的强化学习智能体轨迹数据挖掘与可视化分析系统大数据毕设项目
大数据·hadoop·机器学习·数据挖掘·spark·课程设计·数据可视化
Q26433650231 天前
【有源码】基于大数据的药品多维度属性分析可视化系统 基于Spark的药品属性聚类与关联规则可视化分析系统
hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计·大数据项目
网络豆1 天前
Apache Hive 鸿蒙 PC 适配全记录:以 Qt 客户端打通 HiveQL、监控与元数据访问
hive·apache·harmonyos
Q26433650231 天前
【有源码】基于大数据的零售交易者行为特征与生存状况数据分析及可视化 Hadoop+Spark大数据项目
大数据·hadoop·信息可视化·数据挖掘·数据分析·spark·毕业设计
Q26433650231 天前
【有源码】基于 Hadoop 生态的化妆品销售数据存储分析与可视化 面向化妆品行业的用户画像构建与销售机会识别研究
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
计算机编程-吉哥2 天前
基于机器学习的城市交通拥堵分析与预测平台【计算机毕业设计选题·机器学习·随机森林算法】
hadoop·算法·随机森林·机器学习·课程设计·计算机毕业设计选题·大数据毕业设计选题推荐