2014-02-11 57 views
1

我正在运行启用分析的DSE 3.2.4。我试图将我的一个表格卸载到S3中以进行长期存储。我创建了下表中配置单元:DataStax Enterprise 3.2 - Hive S3 NoSuchBucket

CREATE EXTERNAL TABLE events_archive (
    event_id string, 
    time string, 
    type string, 
    source string, 
    value string 
) 
PARTITIONED BY (year string, month string, day string, hour string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
LOCATION 's3n://com.mydomain.events/'; 

然后我尝试使用此查询一些样本数据加载到它:

CREATE TEMPORARY FUNCTION c_to_string AS 'org.apache.hadoop.hive.cassandra.ql.udf.UDFCassandraBinaryToString'; 
SET hive.exec.dynamic.partition.mode=nonstrict; 
SET hive.exec.dynamic.partition=true; 


INSERT OVERWRITE TABLE events_archive 
PARTITION (year, month, day, hour) 
SELECT c_to_string(column4, 'uuid') AS event_id, 
     from_unixtime(CAST(column3/1000 AS int)) AS time, 
     CASE column1 
     WHEN 'pageviews-push' THEN 'page_view' 
     WHEN 'score_realtime-internal' THEN 'realtime_score' 
     ELSE 'social_data' 
     END AS type, 
     CASE column1 
     WHEN 'pageviews-push' THEN 'internal' 
     WHEN 'score_realtime-internal' THEN 'internal' 
     ELSE split(column1, '-')[0] 
     END AS source, 
     value, 
     year(from_unixtime(CAST(column3/1000 AS int))) AS year, 
     month(from_unixtime(CAST(column3/1000 AS int))) AS month, 
     day(from_unixtime(CAST(column3/1000 AS int))) AS day, 
     hour(from_unixtime(CAST(column3/1000 AS int))) AS hour, 
     c_to_string(key2, 'blob') AS content_id 
    FROM events 
WHERE column2 = 'data' 
    AND value IS NOT NULL 
    AND value != '' 
LIMIT 10; 

我最终得到此异常:

2014-02-11 20:23:55,810 ERROR ql.Driver (SessionState.java:printError(400)) - FAILED: Hive Internal Error: org.apache.hadoop.fs.s3. S3Exception(org.jets3t.service.S3ServiceException: S3 GET failed for '/10.226.118.113/%2F' XML Error Message: <?xml version="1.0"  encoding="UTF-8"?><Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>10.226.118.113< /BucketName><RequestId>FFFFBCE9711A91AE</RequestId><HostId>kXu2oMblsYKD+Jx9O5fTbjosOtTNNtyM+lbE2pmCC63Wm3abJxMvanHdSCYnUyaC</HostId></Error> ) 
org.apache.hadoop.fs.s3.S3Exception: org.jets3t.service.S3ServiceException: S3 GET failed for '/10.226.118.113/%2F' XML Error Message: < ?xml version="1.0" encoding="UTF-8"?><Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>10. 226.118.113</BucketName><RequestId>FFFFBCE9711A91AE</RequestId><HostId>kXu2oMblsYKD+Jx9O5fTbjosOtTNNtyM+lbE2pmCC63Wm3abJxMvanHdSCYnUyaC< /HostId></Error> 
    at org.apache.hadoop.fs.s3.Jets3tFileSystemStore.get(Jets3tFileSystemStore.java:156) 
    at org.apache.hadoop.fs.s3.Jets3tFileSystemStore.retrieveINode(Jets3tFileSystemStore.java:195) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59) 
    at $Proxy14.retrieveINode(Unknown Source) 
    at org.apache.hadoop.fs.s3.S3FileSystem.mkdir(S3FileSystem.java:148) 
    at org.apache.hadoop.fs.s3.S3FileSystem.mkdirs(S3FileSystem.java:141) 
    at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1126) 
    at org.apache.hadoop.hive.ql.Context.getScratchDir(Context.java:165) 
    at org.apache.hadoop.hive.ql.Context.getExternalScratchDir(Context.java:222) 
    at org.apache.hadoop.hive.ql.Context.getExternalTmpFileURI(Context.java:315) 
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genFileSinkPlan(SemanticAnalyzer.java:4049) 
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPostGroupByBodyPlan(SemanticAnalyzer.java:6205) 
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genBodyPlan(SemanticAnalyzer.java:6136) 
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:6762) 
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:7531) 
    at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:243) 
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:431) 
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:336) 
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:909) 
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:258) 
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:215) 
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:406) 
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:689) 
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:557) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 
Caused by: org.jets3t.service.S3ServiceException: S3 GET failed for '/10.226.118.113/%2F' XML Error Message: <?xml version="1.0"  encoding="UTF-8"?><Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>10.226.118.113< /BucketName><RequestId>FFFFBCE9711A91AE</RequestId><HostId>kXu2oMblsYKD+Jx9O5fTbjosOtTNNtyM+lbE2pmCC63Wm3abJxMvanHdSCYnUyaC</HostId></Error> 
    at org.jets3t.service.impl.rest.httpclient.RestS3Service.performRequest(RestS3Service.java:416) 
    at org.jets3t.service.impl.rest.httpclient.RestS3Service.performRestGet(RestS3Service.java:752) 
    at org.jets3t.service.impl.rest.httpclient.RestS3Service.getObjectImpl(RestS3Service.java:1601) 
    at org.jets3t.service.impl.rest.httpclient.RestS3Service.getObjectImpl(RestS3Service.java:1544) 
    at org.jets3t.service.S3Service.getObject(S3Service.java:2072) 
    at org.jets3t.service.S3Service.getObject(S3Service.java:1310) 
    at org.apache.hadoop.fs.s3.Jets3tFileSystemStore.get(Jets3tFileSystemStore.java:144) 
... 33 more 

Hive S3连接器是否支持最新的DSE?或者我可能做错了什么?

+0

您的存储桶名称实际上是否是“10.226.118.113”? – Rico

+0

不,因为它在“CREATE TABLE”中显示的存储桶名称是“com.mydomain.events”。 '10.226.118.113'是我正在执行命令的节点的IP地址。 –

+0

您是否需要在查询中指定存储桶?很明显,你将把你的IP地址作为存储桶名称。 – Rico

回答

3

尝试在你的蜂巢安装如下:

蜂房的site.xml

<property> 
    <name>fs.default.name</name> 
    <value>s3n://your-bucket</value> 
</property> 

核心的site.xml

<property> 
    <name>fs.s3n.awsAccessKeyId</name> 
    <value>Your AWS Key</value> 
</property> 

<property> 
    <name>fs.s3n.awsSecretAccessKey</name> 
    <value>Your AWS Secret Key</value> 
</property> 

这是每3.1文档:http://www.datastax.com/docs/datastax_enterprise3.1/solutions/about_hive

下:

在蜂巢

使用一个外部文件系统

没有看到它在3.2文档。不知道为什么他们省略了它,但看起来像是你在S3上运行Hive必不可少的东西

+0

这似乎适用于我,我有在那里的访问键,我只是没有默认名称设置为's3n:// my-bucket /'。它已经设置为'cfs:// local-ip /',所以我想知道这是否会导致一些尚未被注意的问题。 –

0

S3文件系统的Hadoop实现已过时,因此从配置单元向S3写入数据不能很好地工作。我们通过阅读来解决这个问题。现在DSE可以读取S3文件,但写入有问题。我们会检查它是否可以尽快修复它

+0

将数据写入s3有什么问题? –

相关问题