Hive 配置单元:创建表并同时在本地写入

Hive 配置单元:创建表并同时在本地写入,hive,local,create-table,Hive,Local,Create Table,是否可以在配置单元中创建一个表,同时将其保存在本地 当我得到数据进行分析时,我通常创建临时表来跟踪最终结果 查询/脚本中的错误。其中一些只是临时表,而另一些包含我实际分析所需的数据 我通常使用hive-e“select*from db.table”>filename.tsv在本地获取数据;然而,当桌子很大时,这可能需要相当长的时间 我想知道在我的脚本中是否有某种方法可以创建表并同时将其保存在本地。这可能是不可能的,但我认为值得一问。诚实地按自己的方式做是两种可能方式中最好的一种,但值得注意的是,

是否可以在配置单元中创建一个表,同时将其保存在本地

当我得到数据进行分析时,我通常创建临时表来跟踪最终结果 查询/脚本中的错误。其中一些只是临时表,而另一些包含我实际分析所需的数据

我通常使用
hive-e“select*from db.table”>filename.tsv
在本地获取数据;然而,当桌子很大时,这可能需要相当长的时间


我想知道在我的脚本中是否有某种方法可以创建表并同时将其保存在本地。这可能是不可能的,但我认为值得一问。

诚实地按自己的方式做是两种可能方式中最好的一种,但值得注意的是,您可以在.hql文件中执行类似的任务以实现自动化

使用如下语法:

INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' select * from table;
INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
select books from table;
您可以运行查询并将其存储在本地目录中的某个位置(只要有足够的空间和正确的权限)

这样做的一个缺点是,使用管道可以很好地将数据存储为“|”定界和新线分隔,但我认为这种方法会将值存储在配置单元默认值“^b”中

解决方法是这样做:

INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' select * from table;
INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
select books from table;
但这只适用于蜂巢0.11或更高