我有一种使用boto3(1.4.4),pyarrow(0.4.1)和pandas(0.20.3)实现这一目标的hacky方法.
首先,我可以在本地读取单个镶木地板文件,如下所示:
import pyarrow.parquet as pq
path = 'parquet/part-r-00000-1e638be4-e31f-498a-a359-47d017a0059c.gz.parquet'
table = pq.read_table(path)
df = table.to_pandas()
Run Code Online (Sandbox Code Playgroud)
我也可以在本地读取镶木地板文件目录,如下所示:
import pyarrow.parquet as pq
dataset = pq.ParquetDataset('parquet/')
table = dataset.read()
df = table.to_pandas()
Run Code Online (Sandbox Code Playgroud)
两者都像魅力一样.现在我想用存储在S3存储桶中的文件远程实现相同的功能.我希望这样的东西能起作用:
dataset = pq.ParquetDataset('s3n://dsn/to/my/bucket')
Run Code Online (Sandbox Code Playgroud)
但它没有:
OSError: Passed non-file path: s3n://dsn/to/my/bucket
在仔细阅读了pyarrow的文档后,目前似乎无法做到这一点.所以我提出了以下解决方案:
从S3读取单个文件并获取pandas数据帧:
import io
import boto3
import pyarrow.parquet as pq
buffer = io.BytesIO()
s3 = boto3.resource('s3')
s3_object = s3.Object('bucket-name', 'key/to/parquet/file.gz.parquet')
s3_object.download_fileobj(buffer)
table = pq.read_table(buffer)
df = table.to_pandas()
Run Code Online (Sandbox Code Playgroud)
在这里,我的hacky,not-so-optimized,解决方案从S3文件夹路径创建一个pandas数据框:
import io
import …Run Code Online (Sandbox Code Playgroud) Instagram用于在端点下将开放数据公开为json https://www.instagram.com/<username>/?__a=1.这改变了一夜,端点不再可用.什么是新的端点或什么可以替代它?
提前致谢!
阅读Github的“ 生成SSH密钥”教程,我在第2步:生成新的SSH密钥中看到了这一点:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Run Code Online (Sandbox Code Playgroud)
令我困扰的是"your_email@example.com"。我知道这只是一条评论,甚至是可选的。但是我想知道,将您的电子邮件地址放在这里是否安全?因为我认为建议您放置机器而不是电子邮件,例如"my-machine@home"。
在该教程之后,我已经使用了公共密钥,因此我的电子邮件地址在我的一些公共密钥中。我应该修理吗?还是没有问题?
我知道列表与数组不同.但是,O(1)?这意味着访问列表中的元素与访问dict中的元素一样快,我们都知道这不是真的.我的问题是基于这份文件:
Run Code Online (Sandbox Code Playgroud)list ---------------------------- | Operation | Average Case | |-----------|--------------| | ... | ... | |-----------|--------------| | Get Item | O(1) | ----------------------------
而这个答案:
列表中的查找是O(n),字典中的查找是分摊的O(1),关于数据结构中的项目数.
如果第一个文档是真的,那么为什么访问一个dict比访问列表更快,如果它们具有相同的复杂性?
有人可以对此作出明确的解释吗?我会说它总是取决于列表/字典的大小,但我需要更多的洞察力.