您的位置:首页 > 运维架构

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

2011-06-02 17:33 357 查看
虽然在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,是可以查到数据的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息