查看HIVE所在HDFS中的位置

在 hive 环境下可通过show create table的命令:

hive> show databases; # 查看所有的数据库
OK
app
dev
hive> use dev; # 选择dev数据库
OK
hive> show create table test_table; # 打印创建表的sql语句


sql语句中有一项为 LOCATION,即为此表在 hdfs 中的位置,如:

LOCATION
  'hdfs://mycluster/user/hive/dev.db/test_table'


如果表为 dev.test_table,则表路径的最后一般为 dev.db/test_table

### 将HDFS中的数据导入到Hive #### 使用LOAD DATA语句 可以直接通过`LOAD DATA INPATH`命令将存储于HDFS上的文件加载至指定内。此操作会移动或复制源路径下的文件到对应格的数据目录下,具体取决于是否指定了LOCAL关键字[^3]。 对于位于HDFS而非本地系统的文件,则省略LOCAL选项: ```sql LOAD DATA INPATH '/hdfs/path/to/file' INTO TABLE my_table; ``` 上述SQL指令执行后,来自给定HDFS路径的文件会被迁移到由Hive管理的目标关联位置,并成为其组成部分之一。 #### 利用INSERT...SELECT语法实现转换 另一种常见的方式是从已经存在于HDFS里的其他结构化数据集中抽取所需字段并插入新创建或是现有的Hive里。这通常涉及到编写一个`INSERT INTO ... SELECT ... FROM ...`形式的询来完成这一过程[^1]。 假设有一个CSV格式的日志文件存放在HDFS上,现在希望将其内容按照一定模式映射成一张新的关系型: ```sql CREATE EXTERNAL TABLE IF NOT EXISTS logs ( log_time STRING, user_id BIGINT, action STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/user/hadoop/logs'; -- 假设目标已存在且具有兼容schema INSERT INTO target_table SELECT * FROM logs WHERE ... ``` 这里先声明了一个外部指向原始日志所在之处,接着利用标准的选择达式过滤和投影出期望的结果集再写入最终目的地。这种方式特别适合处理那些需要经过清洗、聚合或其他复杂变换才能入库的情况[^2]。 #### 自动化流程集成工具的应用 考虑到实际生产环境中往往面对着持续流入的大规模异构数据流,在Kafka、Flume等消息队列/采集框架的帮助下可以构建起更加高效稳定的ETL管道,自动地把最新产生的记录同步过来并适时触发下游分析任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值