我在蜂巢中创建了4个表(a,b,c,d),并通过连接它们在该表的顶部创建了视图(x)。
-如何将x基本的csv数据从hdfs导出到本地?
-我如何将这个csv保留在hdfs中
对于表格,我们可以显示创建表格a ;
这将显示基础CSV存储在hdfs中的位置。
hadoop fs从源路径和文件获取到目标路径和文件
类似地,我如何从视图中获取csv数据到本地。
答案 0 :(得分:0)
1)将结果写入文件,您可以使用INSERT OVERWRITE
,如下所示:
insert overwrite local directory '/tmp/output'
row format delimited
fields terminated by '|'
select * from <view>;
2)如果要将文件写入HDFS,请在insert overwrite
上面的语句中使用local
3)没有用于视图的单独HDFS位置。
视图是表中的纯粹逻辑结构,HDFS中没有为它们创建单独的基础存储。
当您要存储中间结果并直接查询而不是在该表上一次又一次地编写复杂查询时,将使用 视图。就像我们在查询中使用with blocks
。
答案 1 :(得分:0)
您可以使用以下方法将视图数据导出到CSV:
insert overwrite local directory '/user/home/dir' row format delimited fields terminated by ',' select * from view;
如果需要使用cat
的单个文件,请在本地目录中串联文件:
cat /user/home/dir/* > view.csv
或者,如果数据集较小,则可以在查询中添加order by
,这将触发单个reducer并生成单个有序文件。如果数据集很大,则执行速度会很慢。