首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带冰山和S3的独立蜂巢转移癌

带冰山和S3的独立蜂巢转移癌
EN

Stack Overflow用户
提问于 2020-10-06 02:48:40
回答 1查看 792关注 0票数 0

我想使用Presto来查询存储在S3中作为拼图文件存储的冰山表,因此我需要使用Hive metastore。我正在运行一个由MySql支持的独立的转移存储服务。我已经将Iceberg配置为使用Hive目录:

代码语言:javascript
复制
import org.apache.hadoop.conf.Configuration;
import org.apache.iceberg.catalog.Namespace;
import org.apache.iceberg.hive.HiveCatalog;

public class MetastoreTest {

    public static void main(String[] args) {
        Configuration conf = new Configuration();
        conf.set("hive.metastore.uris", "thrift://x.x.x.x:9083");
        conf.set("hive.metastore.warehouse.dir", "s3://bucket/warehouse");
        HiveCatalog catalog = new HiveCatalog(conf);
        catalog.createNamespace(Namespace.of("my_metastore"));
    }

}

我收到以下错误:Caused by: MetaException(message:Got exception: org.apache.hadoop.fs.UnsupportedFileSystemException No FileSystem for scheme "s3")

我已经在HADOOP_CLASSPATH中包含了/hadoop-3.3.0/share/hadoop/tools/lib,还将亚马逊网络服务相关的jars复制到了apache-hive-metastore-3.0.0-bin/lib中。还遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-10-06 06:46:07

终于想明白了。首先(正如我之前提到的),我必须在HADOOP_CLASSPATH中包含hadoop/share/hadoop/tools/lib。然而,无论是修改HADOOP_CLASSPATH,还是将特定的文件从工具复制到公共文件,对我来说都不起作用。然后我切换到hadoop-2.7.7,它起作用了。此外,我还必须将与jackson相关的jars从工具复制到通用。我的hadoop/etc/hadoop/core-site.xml看起来像这样:

代码语言:javascript
复制
<configuration>

    <property>
        <name>fs.default.name</name>
        <value>s3a://{bucket_name}</value>
    </property>


    <property>
        <name>fs.s3a.impl</name>
        <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
    </property>

    <property>
        <name>fs.s3a.endpoint</name>
        <value>{s3_endpoint}</value>
        <description>AWS S3 endpoint to connect to. An up-to-date list is
            provided in the AWS Documentation: regions and endpoints. Without this
            property, the standard region (s3.amazonaws.com) is assumed.
        </description>
    </property>


    <property>
        <name>fs.s3a.access.key</name>
        <value>{access_key}</value>
    </property>

    <property>
        <name>fs.s3a.secret.key</name>
        <value>{secret_key}</value>
    </property>


</configuration>

此时,您应该能够ls您的s3存储桶:

hadoop fs -ls s3a://{bucket}/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64214481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档