从Blaze访问S3上的分片JSON文件中的数据

时间:2017-03-05 01:11:00

标签: python json amazon-s3 blaze odo

我正在尝试访问S3上的行分隔JSON数据。 根据我对文档的理解,我应该能够做类似

的事情
sed -i "/^[ \t]*\/\*<O33>\*\//,/^[ \t]*\/\*<\/O33>\*\//d" $Path/DebugVersion.c

抛出

print data(S3(Chunks(JSONLines))('s3://KEY:SECRET@bucket/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()

我真的不明白如何使用type-modofiers

1 个答案:

答案 0 :(得分:1)

在此页面的{em>示例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:SECRET@bucket/dir/part-*.json'的调用未通过,因为 KEY 和/或 SECRET 变量包含UpperCase或不允许使用的字符