使用不在hdfs中的文件

时间:2015-08-02 14:23:35

标签: hadoop hive bigdata

我有 root 访问服务器,安装了hadoop和hive。但是,尽管我拥有root权限,我无法将数据从文件系统复制到hdfs:

root@serv:~# hadoop fs -put flume_test/logs /user
put: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

我尝试了不同的方法从文件flume_test/logs创建表,而不是在hdfs中。例如:

CREATE TABLE natlog_orc (
    src_local_ip STRING,
    time_start STRING,
    time_end STRING,
    src_global_ip STRING,
    protocol STRING,
    port_start STRING,
    port_end STRING
)
ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ","
STORED AS TEXTFILE
LOCATION /root/flume_test/logs;

但他们中没有一个人没有工作。

那么,我如何从文件中创建外部表,而不是位于hdfs中?或者我可以更改hadoop设置中的哪个参数以获得将数据复制到hdfs的必要权限?

1 个答案:

答案 0 :(得分:1)

HDFS权限与本地文件系统不同。 root没有超级权限。您获得的错误是因为root用户没有写入/ user的权限。切换到hdfs用户(运行su - hdfs)并在hdfs上创建一个目录以将数据放入(例如/ user / root)。将目录chown到root,您就可以将数据上传到hdfs。