您好我在使用Hive时尝试将S3用作默认文件系统。 我已经成立了:
我可以创建数据库和表格,它们会显示在我的s3存储桶中。 当我尝试使用这些表时出现问题 - 从中进行选择,插入。我收到一个错误:
Incomplete HDFS URI, no host: hdfs:/tmp/hive/hadoop/dir/filename
问题是它仍然使用hdfs而不是s3,我应该设置什么来使Hive和MapReduce使用S3作为FS?
答案 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>