HIVE表数据快速构造(分区表、orc、text)

文章介绍了如何通过HUE进行Hive外部表的创建和测试数据的管理,包括创建数据库、外部表,通过HDFS上传数据文件,以及构建日期分区表的方法,强调了HUE提供的可视化操作的便捷性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言
当需要在hive数仓中去创建测试表并构造测试数据时,通常需要在安装了hive客户端的服务器环境下,通过执行命令的方式建表。通过在HDFS上上传和加载数据文件的方式来加载数据到hive表中。其中操作算不得多复杂,但比较依赖对环境和命令的熟悉,并且操作不够可视化。这里介绍另一种更外快捷的可视化操作方法。
关键思路
操作依赖HDFS和HUE,hadoop集群中需要部署安装这部分服务。
在这里插入图片描述

通过HUE来执行hivesql,达到建表和查询结果数据的目的。
通过HDFS的可视化文件管理功能,达到上传数据文件实现hive数据存储映射。

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
详细操作

Step_1 使用HUE创建hive外部表
通过集群中HUE入口进入hue
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行hivesql创建测试数据库、数据表。创建完成后刷新页面可以看到新建的库和表。
在这里插入图片描述

示例脚本如下
– 创建一个新的db 用于测试
create database qywu_testdb;

– 选中这个测试db
use qywu_testdb;

– 创建测试表 注意需要保存为外部表 ,数据文件格式为TEXTFILE并且指定location位置
CREATE EXTERNAL TABLE qywu_testdb1
(
name STRING,
age STRING,
gpa STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
STORED AS TEXTFILE
LOCATION ‘/user/bigshan/qywu_testdb1’;

这里需要注意
 创建外部表并且LOCATION 指定源数据存储的路径,不指定的话 hive 会在 /user/hive/warehouse 下以外部表的表名创建目录并将数据存储在这里。
 创建外部表的好处是导入数据到外部表,只需导入数据到建表语句中 LOCATION 参数指定的 HDFS 目录下即可
 保存数据文件指定为TEXTFILE格式,方便数据文件构造,若指定表需存储为其他格式如ORC,可通过先创建TEXTFILE表,再用insert导入到其他ORC格式的表中。

Step_2 从HDFS的namenode ui 进行数据文件的上传
在这里插入图片描述
在这里插入图片描述
在hdfs的目录系统中找到STPE_1中建表对应的LOCATION路径
在这里插入图片描述
可以看到建表完成后,自动创建了qywu_testdb1这个目录,并且目录下暂时不存在任务数据。
Step_3 生成对应测试表结构的数据文件,并通过页面上传到对应表的LOCATION位置下
参考建表的数据结构
CREATE EXTERNAL TABLE qywu_testdb1
(
name STRING,
age STRING,
gpa STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
STORED AS TEXTFILE
LOCATION ‘/user/bigshan/qywu_testdb1’;
测试表有三个字段,并且以’/t‘作为字段分隔符,未指定行分隔符,默认以‘\n’为行分隔符。构造一万条符合存格式的测试文件。
在这里插入图片描述
上传该数据文件到HDFS上,路径对应表的LOCATION位置
在这里插入图片描述
上传完成可以在LOCATION目录下看到该数据文件
在这里插入图片描述
现在可以去HUE中查询该表数据是否成功加载
在这里插入图片描述
在这里插入图片描述
至此完成测试数据构造。
注意:
 数据文件编码建议为UTF-8,否则可能中文乱码
 Hive表数据在hdfs目录下,可以同时存在多个数据文件,这意味着需要增加表内数据时,可以通过复制上传多个数据文件的方式,快速实现表数据增加

补充说明-构造日期分区表和表数据
实际数据治理场景下,治理后的数据模型,经常是日期分区表,下面简单介绍下构造分区表数据。
首先创建分区表,指定dt为分区字段
– 创建分区表
CREATE EXTERNAL TABLE qywu_testdb_fq
(
name STRING,
age STRING,
gpa STRING
)partitioned by (dt string) --指定分区字段
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
STORED AS TEXTFILE
LOCATION ‘/user/bigshan/qywu_testddb_fq_datadir’;
在这里插入图片描述
执行hivesql增加一个分区。
– 增加分区字段
alter table qywu_testdb_fq add partition(dt=“20221226”);

查看HDFS目录,查看是否创建分区成功
在这里插入图片描述
可以看到这里创建分区成功,已分区字段值新建了一个hdfs路径,接下来构造数据并上传即可完成日期分区表的数据构造

<think>嗯,用户想了解如何使用StarRocks向Hive分区表插入数据的方法和示例。首先,我需要回忆一下StarRocks和Hive的集成方式。根据引用[3],SparkSQL可以通过访问Hive的MetaStore来操作Hive,那StarRocks应该也有类似的机制。不过StarRocks本身是OLAP数据库,可能主要支持数据查询而不是直接写入Hive。 接下来,看看用户提到的引用内容。引用[1]提到StarRocks的Internal Catalog管理内部数据,而引用[2]是关于Broker Load导入数据,支持撤销操作。引用[3]则指出SparkSQL整合Hive需要MetaStore的支持。可能用户需要的是通过外部Catalog的方式访问Hive,然后通过数据导入的方式将数据插入到Hive分区表中。 StarRocks支持创建External Catalog来访问Hive,但默认情况下,StarRocks主要作为查询引擎,数据写入可能需要借助其他工具。比如,使用Broker Load将数据导出到HDFS,然后通过Hive的LOAD DATA命令加载分区。或者,使用INSERT OVERWRITE DIRECTORY将查询结果导出到Hive所在的位置,再刷新Hive的分区元数据。 另外,用户的问题可能涉及到数据从StarRocks到Hive的迁移或同步。这时候可能需要结合Hive的外部功能,将数据存储在HDFS或对象存储中,然后通过ALTER TABLE ADD PARTITION来添加分区。需要注意的是,StarRocks本身不支持直接向Hive插入数据,可能需要通过中间步骤,如导出数据文件到Hive的存储路径,并更新分区信息。 还要考虑分区表的动态分区和静态分区处理。如果是静态分区,可以在导出时指定路径;如果是动态分区,可能需要生成相应的分区目录结构。同时,确保Hive Metastore服务可用,并且StarRocks配置正确访问Hive的元数据,如引用[3]提到的配置hive-site.xml。 总结可能的步骤:1. 在StarRocks中创建Hive的外部Catalog;2. 使用Broker Load或导出查询结果到Hive对应的存储路径;3. 在Hive中执行分区刷新命令。需要给出具体的SQL示例和配置说明,确保用户能够操作。</think>### 使用StarRocks向Hive分区表插入数据的方法 #### 1. 通过External Catalog实现数据互通 StarRocks支持通过**External Catalog**访问Hive数据[^1][^3],但直接写入Hive分区表需结合数据导出流程: ```sql -- 创建Hive External Catalog CREATE EXTERNAL CATALOG hive_catalog PROPERTIES ( "type" = "hive", "hive.metastore.uris" = "thrift://hive-metastore-host:9083" ); ``` #### 2. 使用Broker Load导出数据Hive路径 通过将StarRocks数据导出到Hive存储路径(如HDFS/S3),再手动刷新Hive分区: ```sql -- 导出数据Hive路径 INSERT OVERWRITE DIRECTORY "hdfs://path/to/hive_table/" FORMAT AS "parquet" SELECT col1, col2, partition_col FROM starrocks_table; -- Hive中刷新分区 ALTER TABLE hive_table ADD PARTITION (dt='2023-10-01'); ``` 需注意文件路径需符合Hive分区格式,如`/path/table/dt=2023-10-01/`。 #### 3. 结合SparkSQL中转写入(推荐) 通过SparkSQL作为中间层实现数据流转: ```python # 读取StarRocks数据 df = spark.read.format("starrocks") .option("starrocks.table.identifier", "db.table") .load() # 写入Hive分区表 df.write.partitionBy("dt").mode("append").saveAsTable("hive_db.hive_table") ``` 需配置Spark连接StarRocks和Hive的元数据服务[^3]。 #### 4. 直接写入Hive外部Hive使用外部存储(如HDFS/S3): ```sql -- StarRocks中生成Hive格式文件 INSERT INTO FILES("path"="s3://bucket/hive_table/dt=2023-10-01/", "format"="parquet") SELECT col1, col2 FROM starrocks_table; ``` 需保证文件路径与Hive分区结构完全匹配。 ### 关键注意事项 1. **元数据同步**:写入后需在Hive中执行`MSCK REPAIR TABLE`刷新分区 2. **权限配置**:确保StarRocks有Hive存储路径的写入权限 3. **格式一致性**:导出文件格式需与Hive定义匹配(Parquet/ORC等)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值