插入数据到HIVE表时出现错误

3

我正在尝试将一个“制表符分隔文件”中的数据插入到已经创建好的HIVE表中,该表名为“users”,其中已经建立了4个基本列。我正在使用以下命令:

load data local inpath 'D:\users.txt'
into table users;

在运行上述命令后,我收到了以下错误消息:

FAILED: SemanticException [Error 10028]: Line 1:23 Path is not legal ''D:\users.txt'': Source file system should be "file" if "local" is specified

我正在使用Windows 7,并通过PUTTY在Amazon Web Services上运行HIVE。 非常感谢您的帮助。TIA

1
我不确定在Windows中如何运作,但看起来你需要提供 file:///D://users.txt。 - vishnu viswanath
Sonic是正确的:Java使用“/”作为文件分隔符,而不是类似于Windows的“\”。 - xhudik
无论如何,您都不能直接从本地计算机将文件加载到在AWS上运行的Hive中。local关键字表示在运行Hive的服务器上本地,而不是来自HDFS的文件。使用winscp等工具将文件复制到服务器上,然后使用服务器上的本地路径发出加载命令。 - dimamah
1
谢谢您的回答。我不得不将代码复制到服务器上,代码运行了。但是,在从文本文件插入值时,HIVE 中的表只接受所有 NULL 值。有任何想法吗? - Patthebug
1个回答

1

最终,如果有人想要从一个以制表符分隔的文本文件中向表格中添加值,则应使用以下命令:

hive> create table test_table(k string, v string) row format delimited fields terminated by '\t' stored as textfile;

以上命令将在制表符分隔的文件被复制到服务器后起作用。我使用WinSCP完成了这个过程。 - Patthebug

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接