我在 Hive "sample" 中创建了一个表,并将一个 csv 文件 "sample.txt" 加载到其中。
现在我需要将“样本”中的数据放入我的本地/opt/zxy/sample.txt。
我怎样才能做到这一点?
Hortonworks 的Sandbox 可让您通过其 HCatalog 菜单进行操作。否则,语法为
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/c' SELECT a.* FROM b
对于这种事情,我通常直接通过 Hive 在命令行上运行我的查询,并将其通过管道传输到本地文件中,如下所示:
hive -e 'select * from sample' > /opt/zxy/sample.txt
希望有帮助。
由于您的意图只是将整个文件从 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
简单 n 容易。但是如果您需要复制一些选定的数据,那么您必须使用 Hive 查询。
高温高压
从 Windows 操作系统访问 Hive 的读者可以在 Github 上查看此脚本。
这是一个 Python+paramiko 脚本,可将 Hive 数据提取到本地 Windows 操作系统文件系统。