我在hive中创建了4个表(a,b,c,d),并通过连接它们在表的顶部创建了一个视图(x)。
如何将x底层csv数据从hdfs导出到本地?
我怎么能保留这个csv …
1)将结果写入您可以使用的文件中 INSERT OVERWRITE 如下:
INSERT OVERWRITE
insert overwrite local directory '/tmp/output' row format delimited fields terminated by '|' select * from <view>;
2)如果要将文件写入HDFS,请使用上面的内容 insert overwrite 声明 local
insert overwrite
local
3)视图没有单独的HDFS位置。
的 视图 强> 从表中纯粹是逻辑构造,并且在HDFS中没有为它们创建单独的底层存储。
的 查看 强> 当您想要存储中间结果并直接查询它们而不是一次又一次地在该表上编写复杂查询时,正在使用它们。这就像我们使用的那样 with blocks 在我们的查询中。
with blocks
您可以使用以下方法将视图数据导出到CSV:
insert overwrite local directory '/user/home/dir' row format delimited fields terminated by ',' select * from view;
如果需要使用单个文件,请在本地目录中连接文件 cat :
cat
cat /user/home/dir/* > view.csv
或者,如果数据集很小,您可以添加 order by 在查询中,这将触发单个reducer并生成单个有序文件。如果数据集很大,这将执行缓慢。
order by