`

greenplum外部表查询hdfs数据

 
阅读更多

原创文章,转载请注明出处:http://qq85609655.iteye.com/blog/2268290

 

1. 建表

CREATE EXTERNAL TABLE hdfs_test (
id int, name varchar(128)
)
LOCATION ('gphdfs://hadoopNameNode:8020/data/gpext/1.dat')
FORMAT 'TEXT' (DELIMITER ',')
;
select * from hdfs_test
;

2. 配置/home/gpadmin/.bashrc

export JAVA_HOME=/usr/jdk64/jdk1.8.0_40
export HADOOP_HOME=/usr/hdp/current/hadoop-client
export PATH=$PATH:$JAVA_HOME/bin/:$HADOOP_HOME/bin
export HADOOP_VERSION=2.7.1

3. 更新greenplum配置

gpconfig -c gp_hadoop_target_version -v hdp2
gpconfig -c gp_hadoop_home -v '/usr/hdp/current/hadoop-client'
gpstop -u
gpstop -r

 4. 如果还是出现下面异常

 

 

Exception in thread ""main"" java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/TaskAttemptContext
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        at java.lang.Class.getMethod0(Class.java:3018)
        at java.lang.Class.getMethod(Class.java:1784)
        at sun.launcher.LauncherHelper.validateMain
Command: 'gphdfs://hadoopNameNode:8020/data/gpext/1.dat'

找不到类的原因,就是配置文件,经常查找相关资料,目前greenplum版本支持Hortonworks发行版HDP2.1,之后的版本并不支持,HDP2.2发行版安装的路径已经变化,通过查看cat /usr/local/greenplum-db/lib/hadoop/hadoop_env.sh的代码了解的mapreduce并没有添加到classpath中,找到问题就简单了,添加

if [ -d "$HADOOP_COMMON_HOME/client" ]; then
for f in $HADOOP_COMMON_HOME/client/*.jar; do
  CLASSPATH=${CLASSPATH}:$f;
done
fi

再次重启greenplum使配置生效,经过测试,完美微笑 

 

 

 

 

 

...

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics