使用S3作为默认文件系统

时间:2017-09-22 15:46:35

标签: hadoop amazon-s3 hive filesystems

您好我在使用Hive时尝试将S3用作默认文件系统。 我已经成立了:

  • fs.defaultFS = S3:// mybucket
  • fs.s3.awsAccessKeyId =本身份识别码
  • fs.awsSecretAccessKey = mysecretkey

我可以创建数据库和表格,它们会显示在我的s3存储桶中。 当我尝试使用这些表时出现问题 - 从中​​进行选择,插入。我收到一个错误:

Incomplete HDFS URI, no host: hdfs:/tmp/hive/hadoop/dir/filename

问题是它仍然使用hdfs而不是s3,我应该设置什么来使Hive和MapReduce使用S3作为FS?

1 个答案:

答案 0 :(得分:1)

使用hive和Amazon S3的最简单方法是启动和使用Amazon EMR群集并使用存储在S3上的外部表

例如,此语句创建一个将存储在S3中的表:

CREATE EXTERNAL TABLE  parquet_hive (
    requestBeginTime string,
    adId string,
    impressionId string,
    referrer string,
    userAgent string,
    userCookie string,
    ip string
)
STORED AS PARQUET
LOCATION 's3://myBucket/myParquet/';

然后您可以将数据插入其中:

INSERT OVERWRITE TABLE parquet_hive
SELECT
  requestbegintime,
  adid,
  impressionid,
  referrer,
  useragent,
  usercookie,
  ip
FROM impressions;

请参阅:Converting to Columnar Formats

如果您使用自己的Hadoop集群而不是Amazon S3,则可能需要一些其他配置才能使用S3(例如,使用s3n:s3a:)。< / p>