Greenplum错误-输入路径不存在
Posted
技术标签:
【中文标题】Greenplum错误-输入路径不存在【英文标题】:Greenplum Error-Input path does not exist 【发布时间】:2016-10-05 15:07:49 【问题描述】:我们有小型 gpdb 集群。当我尝试使用来自 gpdb master 的'gphdfs'
协议读取外部表时。
环境
产品版本 关键Greenplum(GPDB)4.3.8.2 操作系统 Centos 6.5
出现错误:
prod=# select * from ext_table; ERROR: external table gphdfs protocol command ended with error. 16/10/05 14:42:51 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable (seg0 slice1 host.domain.com:40000 pid=25491)
DETAIL:
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://path/to/hdfs
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:285)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:340)
at com.
Command: 'gphdfs://path/to/hdfs'
External table tableame, file gphdfs://path/to/hdfs
我们尝试过: Greenplum主机上的以下链接 https://discuss.pivotal.io/hc/en-us/articles/219403388-How-to-eliminate-error-message-WARN-util-NativeCodeLoader-Unable-to-load-native-hadoop-library-for-your-platform-with-gphdfs
命令结果
按照链接中的建议更改“Hadoop-env.sh”中的内容后它不起作用。仍然抛出相同的错误。我是否需要重新启动 gpdb 以影响更改“Hadoop-env.sh”。
或者
是否有替代方法来处理 gphdfs 协议错误?
任何帮助将不胜感激?
附加的是失败的外部表的 DDL
create external table schemaname.exttablename(
"ID" INTEGER,
time timestamp without time zone,
"SalesOrder" char(6),
"NextDetailLine" decimal(6),
"OrderStatus" char(1),
)
location('gphdfs://hadoopmster.com:8020/devgpdb/filename.txt') FORMAT 'text'
【问题讨论】:
加载本机库只是一个警告,它不应该停止工作。我认为异常中更令人担忧的消息是:Input path does not exist: hdfs://path/to/hdfs
感谢您的指导。我要检查路径。
我刚刚观察到一个症状:discuss.pivotal.io/hc/en-us/articles/… 当我检查能够从 Hadoop /tmp f 目录读取数据的步骤时。但我正在 hadoop 上创建新的 dir /dev 。它抱怨输入路径不存在:hdfs://path/to/hdfs
为什么它适用于 Hadoop /tmp 目录,而不适用于 hadoop 上新创建的目录。
【参考方案1】:
能否请您提供失败的外部表 DDL。另外请确保 gpadmin 用户有权读取和写入数据的 hdfs 路径。 谢谢 普拉蒂什·奈尔
【讨论】:
附件是问题部分的 DDL。请看一下。谢谢 我已经确定 gpadmin 用户对 hdfs 路径有读写数据的权限。 能不能从master和segment服务器访问hadoop fs -ls hdfs://hadoopmster.com:8020/devgpdb/filename.txt 确保以下内容 1. hadoop fs -ls / 可以从master和segment服务器运行 2.hadoop fs -ls hdfs://hadoopmster.com:8020/devgpdb/filename.txt 3 .hadoop fs -cat hdfs://hadoopmster.com:8020/devgpdb/filename.txt 3. 1. hadoop fs -ls / 当我在分段服务器上运行时,可以从主服务器和分段服务器运行它抛出错误:paste.ofcode.org/nBRwFHuMjNnQXXjwgfSRKY【参考方案2】:刚刚在客户站点遇到了这个问题。这篇 Pivotal 支持文章提供了答案: https://discuss.pivotal.io/hc/en-us/articles/219403388-How-to-eliminate-error-message-WARN-util-NativeCodeLoader-Unable-to-load-native-hadoop-library-for-your-platform-with-gphdfs
【讨论】:
您是否将该文件复制到所有 GPDB 节点?更改此文件后无需重新启动 GP。 没有复制到所有节点,也没有重启GP,只是改变了内容。但在链接中没有提到要这样做 执行步骤后复制所有节点并重新启动 GP 。问题依旧 关于 'hadoop fs -ls /' 命令在主服务器上成功运行但在分段服务器上没有成功,这可能是问题之一。当您对访问 HDFS 的外部表发出 SQL 命令时,实际上是连接到 namenode 的段。负载从 HDFS 文件系统直接到段,绕过 master。 这必须在段服务器上工作:hdfs fs -cat /devgpdb/filename.txt以上是关于Greenplum错误-输入路径不存在的主要内容,如果未能解决你的问题,请参考以下文章
错误:[Pivotal][Greenplum JDBC Driver][Greenplum]prepared statement "PS1" 已经存在
Greenplum plpgsql 函数在输入结束时返回语法错误