我在Hive“sample”中创建了一个表格,并在其中加载了一个csv文件“sample.txt”。如何将数据从Hive表复制到本地系统?
现在我需要从“样本”到我的本地/opt/zxy/sample.txt数据。
我该怎么做?
我在Hive“sample”中创建了一个表格,并在其中加载了一个csv文件“sample.txt”。如何将数据从Hive表复制到本地系统?
现在我需要从“样本”到我的本地/opt/zxy/sample.txt数据。
我该怎么做?
Hortonworks' Sandbox可让您通过其HCatalog菜单执行此操作。否则,语法
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/c' SELECT a.* FROM b
因为你的意图只是为了从HDFS整个文件复制到本地FS,我不建议你通过一个蜂巢查询做到这一点,因为原因如下:
000000_0, 000001_0 and so on
),这将需要您以后手动重命名文件。might
打开这些文件时出现的面部问题,因为它们没有任何扩展名。您的操作系统将无法选择应用程序来自行打开这些文件。在这种情况下,您必须重命名文件或手动选择一个应用程序来打开它。为了避免这些问题,你可以使用HDFS get command
:
bin/hadoop fs -get /user/hive/warehouse/sample/sample.txt /opt/zxy/sample.txt
简单不适用方便。但是,如果您需要复制一些选定的数据,则必须使用Hive查询。
HTH
我一般直接通过蜂巢对于这种事情在命令行中运行我的查询,管道将它导入本地文件,像这样:
hive -e 'select * from sample' > /opt/zxy/sample.txt
希望有所帮助。
不,不是。这背后的概念是什么?当我尝试从仓库复制数据时,使用get命令,它会复制或移动仓库中的数据吗?为什么不能使用copyToLocal? – DrewRose
get和copyToLocal都适用于HDFS中的文件。虽然Hive中的数据在技术上存储为HDFS中的文件,但使用Hive查询来提取数据是合理的,而不是试图混淆内部。 –
我必须说我有点困惑,为什么你要从本地加载一个文件到Hive中,然后将完全相同的未经修改的文件提取到本地。 –
嗨,无论命令我把它显示为空。我尝试copyToLocal并获取命令。我不明白这一部分。为什么我们不能使用copyToLocal命令从此Hive仓库复制到本地系统? – DrewRose
让我看看你的命令 – Tariq
] $ hadoop fs -get /user/hive/warehouse/orders1/orders.txt /opt/nancy/orders.txt get:null – DrewRose