2017-03-05 114 views
4

我试图访问S3上的行分隔JSON数据。 从我的文档的理解,我应该能够做到像访问来自Blaze S3的分片JSON文件中的数据

print data(S3(Chunks(JSONLines))('s3://KEY:[email protected]/dir/part-*.json').peek() 

会抛出

BotoClientError: BotoClientError: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format. 

我曾尝试变化这一导致不同的错误。

我可以得到下面的本地文件的工作:

print data(chunks(JSONLines)(map(JSONLines, glob("/home/me/data/*")))).peek() 

我真的不知道为什么需要(map(JSONLines, glob(,虽然。

我真的不知道如何与type-modofiers

+0

您还得到了哪些其他错误? http://stackoverflow.com/help/how-to-ask – oshaiken

+0

嗨@DanielMahler,我想知道,我的回答是否帮助了你? –

回答

1

在此页面中工作的例6评论部分http://www.programcreek.com/python/example/51587/boto.exception.BotoClientError指出:

桶名称不得包含大写字符。我们检查 这是通过追加一个小写字母并用islower()进行测试。 请注意,这也包括像数字存储桶名称用破折号的情况。

采用的功能本次评估是check_lowercase_bucketname(n) 并通过示例调用我们得到:

>>> check_lowercase_bucketname("Aaaa") 
Traceback (most recent call last): 
... 
BotoClientError: S3Error: Bucket names cannot contain upper-case 
characters when using either the sub-domain or virtual hosting calling 
format. 

>>> check_lowercase_bucketname("1234-5678-9123") 
True 
>>> check_lowercase_bucketname("abcdefg1234") 
True 

上面提到的,使我相信,你对's3://KEY:[email protected]/dir/part-*.json'打不通过,因为无论是KEY和/或SECRET变量包含UpperCase或不允许的字符