hdfs找不到本地文件|hadoop mapreduce结果存放的绝对路径是什么

|

1. hdfs 文件路径怎么获取

hadoop有提供相应的脚本去验证文件目录是否存在的: -bash-3.2$ hadoop fs -help…-test -[defsz] <path>: Answer various questions about <path>, with result via exit status. -d return 0 if <path> is a directory. -e return 0 if <path> exists. -f return 0 if <path> is a file. -s return 0 if file <path> is greater than zero bytes in size. -z return 0 if file <path> is zero bytes in size. else, return 1.测试的hdfs目录中: -bash-3.2$ hadoop fs -ls /user/hive/warehouse/yhd_gmv_monthFound 3 itemsdrwxr-xr-x – deploy supergroup 0 2014-08-25 11:15 /user/hive/warehouse/yhd_gmv_month/ds=2014-08-24drwxr-xr-x – deploy supergroup 0 2014-08-26 13:02 /user/hive/warehouse/yhd_gmv_month/ds=2014-08-25drwxr-xr-x – deploy supergroup 0 2014-08-27 08:09 /user/hive/warehouse/yhd_gmv_month/ds=2014-08-26检验昨天产生的目录是否产生的shell脚本: yesterday=$(date -d '-1 day' '+%Y-%m-%d')hadoop fs -test -e /user/hive/warehouse/yhd_gmv_month/ds=$yesterdayif [ $? -eq 0 ] ;then echo 'exist'else echo 'Error! Directory is not exist'fi验证存在的输出结果如下: -bash-3.2$ hadoop fs -test -e /user/hive/warehouse/yhd_gmv_month/ds=$yesterdayif [ $? -eq 0 ] ;then echo 'exist'else echo 'Error! Directory is not exist Or Zero bytes in size'fi-bash-3.2$ if [ $? -eq 0 ] ;then> echo 'exist'> else> echo 'Error! Directory is not exist Or Zero bytes in size'> fiexist

2. Hive的几种常见的数据导入方式

零.Hive的几种常见的数据导入方式常用的的有三种: 1.从本地文件系统中导入数据到Hive表; 2.从HDFS上导入数据到Hive表; 3.在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。 Hive配置: HDFS中Hive数据文件存放目录(启动hive后HDFS自动创建): HDFS: /usr/hive/warehouse hadoop fs -mkdir /usr/hive/warehouse 命令创立 本地数据存放目录: 本地:/home/santiago/data/hive一.从本地文件系统中导入数据到Hive表1.在hive中建表hive> show databases;OKdefaultTime taken: 1.706 seconds, Fetched: 1 row(s)hive> create table guo_test(Name string,String string)> row format delimited> fields terminated by ','> stored as textfile;hive> show tables;OKguo_testTime taken: 0.024 seconds, Fetched: 1 row(s)1234567891011122.在本地文件建立同类型数据表santi@hdp:~/data/hive$ lshive_test.txtsanti@hdp:~/data/hive$ cat hive_test.txtsanti,you are a zhazha.12343.导入数据并测试hive>load data local inpath '/home/santi/data/hive/hive_test.txt' into table guo_test;hive> select * from guo_test;hive>dfs -ls /usr/hive/warehouse/guo_test; #hadoop fs -ls /usr/hive/warehouseFound 1 itemsdrwxrwxr-x – santiago supergroup 0 2017-01-14 21:13/usr/hive/warehouse/guo_test12345678发现hive-site,xml设置的HDFS文件存储位置中多了guo_test这个文件夹#hadoop fs -ls /usr/hive/warehouse/guo_testFound 1 items-rwxrwxr-x 1 santiago supergroup 24 2017-01-14 21:13/usr/hive/warehouse/guo_test/hive_test.txt hive> select * from guo_test;OKsanti you are a zhazha.12345678在该文件夹中找到了所写入hive数据仓库的文件。 [注]本地数据写入成功,但是从本地将数据导入到Hive表的过程中,其实是先将数据临时复制到HDFS的一个目录下(典型的情况是复制到上传用户的HDFS home目录下,比如/home/santi/),然后再将数据从临时目录下移动到对应的Hive表的数据目录里面(临时目录不保留数据)。二.从HDFS文件系统中导入数据到Hive表1.在HDFS文件系统上建立数据文件 hdfs上没有vim命令,则需要将本地数据文件手动传入到HDFS上/data/hive# vim data_HDtoHive/data/hive# cat data_HDtoHivedata from, HDFS to Hive #hadoop fs -put /home/santi/data/hive/data_HDtoHive /usr/data/input//数据传入# hadoop fs -ls /usr/data/input123452导入数据hive> load data inpath '/usr/data/input/data_HDtoHive' into table guo_test;hive> select * from guo_test;OKdata from HDFS to Hive santi you are a zhazha.Time taken: 0.172 seconds, Fetched: 2 row(s)123456数据写入成功 数据存hive配置的数据存储位置中。 [注] 从本地导入数据语句为 hive>load data local inpath ‘/home/santi/data/hive/hive_test.txt’ into table guo_test; 从HDFS中导入数据的语句为 hive> load data inpath ‘/usr/data/input/data_HDtoHive’ into table guo_test; 差距在local这个命令这里。 而从HDFS系统上导入到Hive表的时候,数据转移。HDFS系统上查找不到相关文件。三.从HIVE表选取数据插入新的HIVE表命令为create table 表名 as selecr xxx from 表名。hive> create table hivedata_test1> as> select name> from guo_test;hive> select * from hivedata_test1;OKdata fromsantiTime taken: 0.116 seconds, Fetched: 2 row(s)123456789[注]hive是分区表有稍微区别 在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。比表有a和b两个分区,则对应a=xxx,b=xx对应表的目录为/user/hive/warehouse/a=xxx user/hive/warehouse/b=xx,所有属于这个分区的数据都存放在这个目录中。hive> create table hivedata_test2(> Name string)> partitioned by> (String string)> ROW FORMAT DELIMITED> FIELDS TERMINATED BY ','> STORED AS TEXTFILE;hive> insert into table hivedata_test2> partition(String='best')> select Name> from guo_test;hive> select * from hivedata_test2;OKdata from bestsanti bestTime taken: 1.549 seconds, Fetched: 2 row(s)# hadoop fs -ls /usr/hive/warehouse/hivedata_test2Found 1 itemsdrwxrwxr-x -santiago supergroup 0 2017-02-14 17:40/usr/hive/warehouse/hivedata_test2/string=best

3. hdfs命令查找文件所在路径

指令hadoop fsck /user/hadoop/filename -files -blocks -locations -racks-files 文件分块信息,-blocks 在带-files参数后才显示block信息-locations 在带-blocks参数后才显示block块所在datanode的具体IP位置,-racks 在带-files参数后显示机架位置注意:此命令只能在namenode里输入,在datanode里输入会报错的

4. hadoop使用put上传文件出错

先看看 /user/xxx目录的权限:drwxr-xr-x – hdfs supergroup 表示它属于hdfs用户,组名为 supergroup因此需要使用 sudo -u hdfs hadoop fs -put localfile /user/xxx 来指定使用 hdfs 用户来执行上传命令。参考 当高兴地执行sudo -u hdfs hadoop fs -put localfile /user/xxx 以为能成功上传时,又报错:put: localfile No such file or directory 说找不到本地文件localfile,可是用 ls 明明 能看到 localfile ,后来在一篇文章(参考)中发现发来是lcoalfile的权限问题。

5. hadoop maprece结果存放的绝对路径是什么

README.txt输入文件

wordcountoutput 结果输出所在文件

hadoop fs -lswordcountoutput

就会看到类似的结果。

如果你用eclipse连接hadoop 可以直接看到output文件夹 里面的结果文件也可以打开看part-r-0000

6. 怎么查看hdfs linux 路径

可以fdisk -l 看到 但是它本身是自己的文件系统 就是hdfs 你从linux本地是看不到的 想看里面的文件可以使用如下命令 hadoop fs -ls


赞 (0)