4

我在 Hive "sample" 中创建了一个表,并将一个 csv 文件 "sample.txt" 加载到其中。

现在我需要将“样本”中的数据放入我的本地/opt/zxy/sample.txt。

我怎样才能做到这一点?

4

4 回答 4

2

Hortonworks 的Sandbox 可让您通过其 HCatalog 菜单进行操作。否则,语法为

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/c' SELECT a.* FROM b

根据Hive 语言手册

于 2013-07-09T14:49:24.503 回答
1

对于这种事情,我通常直接通过 Hive 在命令行上运行我的查询,并将其通过管道传输到本地文件中,如下所示:

hive -e 'select * from sample' > /opt/zxy/sample.txt

希望有帮助。

于 2013-07-10T07:47:14.803 回答
1

由于您的意图只是将整个文件从 HDFS 复制到本地 FS,因此我不建议您通过 Hive 查询来执行此操作,原因如下:

  • 它将启动一个 Mapreduce 作业,这将比普通副本花费更多时间。
  • 它将创建具有不同名称(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 查询。

高温高压

于 2013-07-09T20:26:47.000 回答
0

从 Windows 操作系统访问 Hive 的读者可以在 Github 上查看此脚本。

这是一个 Python+paramiko 脚本,可将 Hive 数据提取到本地 Windows 操作系统文件系统。

于 2018-09-04T18:32:54.207 回答