通过fuse使greenplum外部表能使用HDFS上的文件

来源:互联网 发布:weds数据已满 编辑:程序博客网 时间:2024/06/11 15:51

虽然在GREENPLUM 4.1版本已经支持直接外部表读、写HDFS上的文件了,不过有时候可能并不如使用本地磁盘一样方便,这个时候也许你就需要看看FUSE了。

 

1、首先进入$HADOOP_HOME/fuse-dfs目录下,执行如下命令通过FUSE把HDFS挂在到本地目录上
./fuse_dfs_wrapper.sh dfs://hadoop5:9000 /home/gpadmin1/joe.wangh/hive/hive
2、下面随便造一个文本文件,并把它PUT到HDFS中
[gpadmin1@hadoop5 ~]$ hadoop fs -ls /
Found 5 items
drwxr-xr-x   - gpadmin1 supergroup          0 2011-06-02 17:02 /gp
drwxr-xr-x   - gpadmin1 supergroup          0 2011-06-01 11:37 /hive
drwxr-xr-x   - gpadmin1 supergroup          0 2011-05-31 11:45 /home
drwxr-xr-x   - gpadmin1 supergroup          0 2011-05-30 16:20 /tmp
drwxr-xr-x   - gpadmin1 supergroup          0 2011-05-30 16:19 /user
[gpadmin1@hadoop5 ~]$ cat 1.dat
1,2
3,4
5,6
[gpadmin1@hadoop5 ~]$ hadoop fs -put 1.dat /gp
3、启动gpfdist服务,创建外部表,指定相应的文本文件
nohup gpfdist -d /home/gpadmin1/joe.wangh/hive/hive/gp -p 8888 &
[gpadmin1@hadoop5 ~]$ psql
psql (8.2.15)
Type "help" for help.

aligputf8=# create external table t1_ext(        
aligputf8(#   id1 int,
aligputf8(#   id2 int                         
aligputf8(# )
aligputf8-# Location (
aligputf8(# 'gpfdist://hadoop5:8888/1.dat'
aligputf8(# )
aligputf8-# Format 'TEXT' (delimiter as E',' null as '' escape 'OFF')
aligputf8-# Encoding 'gb18030' Log errors into t1_err segment reject limit 1000 rows ;
CREATE EXTERNAL TABLE
aligputf8=# select * from t1_ext;
 id1 | id2
-----+-----
   1 |   2
   3 |   4
   5 |   6
(3 rows)

aligputf8=#

OK,是可以查到数据的

原创粉丝点击