蜂巢-使用外部或本地s3而不是AWS s3

时间:2018-07-09 13:30:51

标签: amazon-s3 hive

我有自己的s3在本地运行,而不是aws s3。有没有办法覆盖 s3.amazonaws.com
我创建了hive-site.xml并将其放在${HIVE_HOME}/conf/中。
这就是我在.xml中得到的:

<configuration>
<property>
    <name>fs.s3n.impl</name>
    <value>org.apache.hadoop.fs.s3native.NativeS3FileSystem</value>
</property>
<property>
    <name>fs.s3n.endpoint</name>
    <value>local_s3_ip:port</value>
</property>
<property>
    <name>fs.s3n.awsAccessKeyId</name>
    <value>VALUE</value>
</property>
<property>
    <name>fs.s3n.awsSecretAccessKey</name>
    <value>VALUE</value>
</property>    

现在,我想创建表,如果我输入:

LOCATION('s3n://hive/sample_data.csv')

我有一个错误:
org.apache.hadoop.hive.ql.exec.DDLTask。 java.net.UnknownHostException: hive.s3.amazonaws.com :名称解析暂时失败

对于s3和s3n均无效。

是否可以覆盖默认的 s3.amazonaws.com 并使用我自己的s3?

2 个答案:

答案 0 :(得分:0)

  1. 切换到S3A连接器(和Hadoop 2.7+ JAR)
  2. 将“ fs.s3a.endpoint”设置为服务器的主机名
  3. 和“ fs.s3a.path.style.access” = true(而不是期望每个存储桶都具有DNS)

期望花时间在身份验证选项上,因为签名始终是第三方商店中的麻烦。

答案 1 :(得分:0)

使用此配置,我可以到达自己的s3端点。

<configuration>
    <property>
        <name>fs.s3a.impl</name>
        <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
    </property>
    <property>
        <name>fs.s3a.endpoint</name>
        <value> <ip>:<port> </value>
    </property>
    <property>
        <name>fs.s3a.path.style.access</name>
        <value>true</value>
    </property>
   <property>
      <name>fs.s3a.access.key</name>
      <value> <ak> </value>
   </property>
   <property>
      <name>fs.s3a.secret.key</name>
      <value> <sk> </value>
   </property>
    <property>
        <name>fs.s3a.awsAccessKeyId</name>
        <value> <ak> </value>
    </property>
    <property>
        <name>fs.s3a.awsSecretAccessKey</name>
        <value> <sk> </value>
    </property>
    <property>
        <name>fs.s3a.connection.ssl.enabled</name>
        <value>false</value>
    </property>