我正在使用cloudera quickstart VM 5.8作为hadoop环境。我试着做以下几点。
创建外部表如果不存在stocks_tb(exch STRING,符号 STRING,ymd STRING,price_open FLOAT,price_high FLOAT,price_low FLOAT,price_close FLOAT,交易量INT,price_adj_close FLOAT)行 格式删除字段由','终止地点 ' HDFS://quickstart.cloudera:8020 / hadoop的/蜂巢/股&#39 ;;
{我尝试使用相对路径,但是hive CLI抱怨我使用的是需要绝对路径的相对路径}
将数据集库从本地文件系统加载到HDFS中的输入/库存。
尝试将数据集加载到表
LOAD DATA INPATH' hdfs://quickstart.cloudera:8020 / input / stocks' INTO 表stocks_tb;
我收到错误
Invalid path ''hdfs://quickstart.cloudera:8020/input/stocks'':
No files matching path hdfs://quickstart.cloudera:8020/input/stocks
我不知道为什么会收到此错误。数据存在于输入/股票/股票中,但发生错误。
您能否发现错误/有关错误的任何想法?
当我这样做时
hadoop fs -ls hdfs://quickstart.cloudera:8020 / input / stocks
我无法看到任何文件,但是当我这样做时
hadoop fs -ls输入/股票
我看到了股票档案
我不知道如何解释这个。你能帮忙吗?
谢谢
答案 0 :(得分:0)
您的用户可能无权读取/写入HDFS中的/输入/股票。
您正在运行该程序的用户是哪个?您可以尝试使用hdfs超级用户帐户。
/ input / stocks的所有权是什么?
运行以下内容以检查所有权
hadoop fs -ls /
hadoop fs -ls /input
您可以运行以下命令来设置所有权/权限;
hadoop fs -chown user:group /input
答案 1 :(得分:0)
正如我所怀疑的那样。
数据实际上是在user / cloudera / input / stocks中,我在load命令中指的是/ input / stocks。
正确的加载命令是
LOAD DATA INPATH ' HDFS://quickstart.cloudera:8020 /用户/ Cloudera的/输入/股' INTO TABLE stocks_tb;