reizist's blog

ウェブ

mac上のhiveのデータストアにS3を使う

reizist.hatenablog.com

の続き。

EXTERNAL TABLEのLOCATIONにS3を使う場合の設定。

やることは2つ。

  • S3AFileSystemを使うために2つファイルを編集してパスを通す

$HADOOP_CONF_DIR/hadoop-env.sh

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/libexec/share/hadoop/tools/lib/*
  • S3AFileSystemの指定とアクセスキーの設定

$HADOOP_CONF_DIR/yarn-site.xml

<?xml version="1.0"?>
<configuration>
  <property>
    <name>fs.s3a.impl</name>
    <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
  </property>
  <property>
    <name>fs.s3a.access.key</name>
    <value>AWSのアクセスキー</value>
  </property>
  <property>
    <name>fs.s3a.secret.key</name>
    <value>AWSのシークレットキー</value>
  </property>
</configuration>

hadoop fs -ls s3a://bucket名/ で疎通が確認とれればOK。

java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found

が発生した場合、正しくパスが通ってない。