我知道Hive的基本概念。我的查询是使用外部配置/架构文件创建配置单元表。
我知道创建配置单元表的基本查询,我们在CREATETABLE语句中传递列标题和数据类型。这只是我们硬编码。
但是我想创建一个配置单元表,它从外部配置文件中获取列标题和数据类型。能在 hive 里做吗?即使我们应该编写unixshell脚本来实现它也没关系,但我不确定。
以下是我的配置文件的格式:
配置.txt
id,Integer(2),NOT NULL
name,String(20)
state,String(5),NOT NULL
phone_no,Integer(4)
gender,Char(1)
到目前为止,我已经创建了一个.hql文件,其中我编写了hivecreatetable语句脚本,并在bash脚本文件中调用了.hql文件。
以下是.hql文件和.sh文件:
hiveq.hql版本:
create table goodrecs(
id int,
name string,
state string,
phone_no int,
gender string) row format delimited fields terminated by ',' stored as textfile;
LOAD DATA INPATH '/user/hduser/Dataparse/goodrec' INTO TABLE goodrecs;
testscript.sh测试脚本:
# !/bin/bash
hive -f hiveQ.hql
在hiveq.hql中,我希望列标题和数据类型来自config.txt文件。
如何做到这一点?
提前谢谢
1条答案
按热度按时间eqqqjvef1#
将config.txt更改为标准hql文件非常方便,可以使用一个Map,将config.txt中的类型转换为配置单元列类型,例如integer到int,char到string。