我在本地计算机上从容器(此图像:https://hub.docker.com/r/bde2020/hive/)运行Hive。
我正在尝试使用以下命令在S3中创建一个存储为CSV的Hive表:
CREATE EXTERNAL TABLE local_test (name STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS TEXTFILE LOCATION 's3://mybucket/local_test/';
但是,我收到以下错误:
失败:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。 MetaException(消息:异常:java.io.IOException没有用于scheme的文件系统:s3)
是什么造成的? 我需要设置其他内容吗?
注意:
我能够运行aws s3 ls mybucket
并在另一个目录中创建Hive表,例如/tmp/
。
答案 0 :(得分:1)
这里讨论的问题。
https://github.com/ramhiser/spark-kubernetes/issues/3
您需要将对aws sdk jar的引用添加到hive库路径。这样它就可以识别文件方案,
s3,s3n和s3a
希望它有所帮助。
<强> EDIT1:强>
hadoop-aws-2.7.4具有如何与这些文件系统交互的实现。验证jar它具有处理这些模式的所有实现。
org.apache.hadoop.fs告诉hadoop查看它需要查看哪个文件系统实现。
下面的课程在那些jar中展示,
org.apache.hadoop.fs [S3 | S3A | s3native]。
唯一遗漏的是,库未添加到hive库路径中。无论如何,您是否可以验证路径是否已添加到配置单元库路径?
<强> EDIT2:强>
参考库路径设置,
How can I access S3/S3n from a local Hadoop 2.6 installation?