Hive:创建表并同时在本地写入

时间:2014-09-24 16:31:02

标签: hive local create-table

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

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

我通常使用hive -e "select * from db.table" > filename.tsv在本地获取数据;但是当表格很大时,这可能需要一段时间。

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

1 个答案:

答案 0 :(得分:1)

老实说,按照自己的方式进行操作是两种可能方式中的最佳方法,但值得注意的是,您可以在.hql文件中执行类似的任务以实现自动化。

使用这样的语法:

INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' select * from table;

您可以运行查询并将其存储在本地目录中的某个位置(只要有足够的空间和正确的权限)

这样做的一个缺点是,使用管道可以很好地将数据存储为“|”分隔和新行分隔,但这个方法会将值存储在hive默认值'^ b'中。我想。

解决方法是做这样的事情:

INSERT OVERWRITE LOCAL DIRECTORY '/home/user/temp' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
select books from table;

但这仅限于Hive 0.11或更高