【问题标题】:Hive / S3 error: "No FileSystem for scheme: s3"Hive / S3 错误:“方案没有文件系统:s3”
【发布时间】:2018-08-20 21:44:39
【问题描述】:

我正在本地计算机中的容器(此图像: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(message:Got exception: java.io.IOException No FileSystem for scheme: s3)

是什么原因造成的? 我需要设置其他东西吗?

注意: 我能够运行 aws s3 ls mybucket 并在另一个目录中创建 Hive 表,例如 /tmp/

【问题讨论】:

    标签: amazon-web-services amazon-s3 hive


    【解决方案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?

    【讨论】:

    • 我没有使用 Spark,但我会尝试在 Hive 库路径中引用这个 aws sdk jar。你能解释一下吗?我下载了一个 hadoop-aws-2.7.4.jar 并使用 ADD JAR /path_to_jar 添加到 Hive,但它仍然无法正常工作......
    • 您是否尝试将其更改为 s3a 而不是 s3.. s3a://mybucket/local_test/
    • 尝试使用 s3a 会得到FAILED: SemanticException java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found
    • 添加参考如何添加路径到hadoop。
    • 感谢您的帮助,但我仍然遇到同样的问题。我尝试直接在 Hive 中添加 jar,但没有成功。不过我可以运行hadoop fs -ls "s3n://ACCESS_KEY:SECRET_KEY@mybucket/"
    猜你喜欢
    • 2021-12-12
    • 2021-11-15
    • 2018-03-26
    • 2020-05-13
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多