我在Hive“sample”中创建了一个表,并在其中加载了一个csv文件“sample.txt”。
现在我需要将“sample”中的数据放入我的本地/opt/zxy/sample.txt。
我该怎么做?
答案 0 :(得分:2)
Hortonworks' Sandbox允许您通过其HCatalog菜单执行此操作。否则,语法为
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/c' SELECT a.* FROM b
答案 1 :(得分:1)
由于您的目的只是将整个文件从HDFS复制到本地FS,因此我建议您不要通过Hive查询来执行此操作,原因如下:
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
答案 2 :(得分:1)
我通常在命令行上通过Hive直接运行我的查询来处理这类事情,然后将其传递到本地文件中,如下所示:
hive -e 'select * from sample' > /opt/zxy/sample.txt
希望有所帮助。
答案 3 :(得分:0)
正在从Windows操作系统访问Hive的读者可以在Github上检出this script。
这是一个Python + paramiko脚本,可将Hive数据提取到本地Windows OS文件系统中。