繁体   English   中英

在这个例子中究竟发生了什么

[英]What exactly happens in this example

我在 tpc-h 数据集的一个切片上用dask编写 TPC-H 查询 6:

start = time.time()
lineitem = dd.read_csv("s3://tpc-h-csv/lineitem/lineitem.tbl.1",sep="|", header = 0)
df = lineitem.rename(columns=dict(zip(lineitem.columns, lineitem_scheme)))
filtered_df = df.loc[(df.l_shipdate > "1994-01-01") & (df.l_discount >= 0.05) & (df.l_discount <= 0.07) & (df.l_quantity < 24)]
filtered_df['product'] = filtered_df.l_extendedprice * filtered_df.l_discount
print(filtered_df.product.sum().compute())
print(time.time() - start)

我有几个问题:

  1. 这是在Dask中编写所述查询的最快方法吗?

  2. 我从S3下载的数据是 48GB。 我节点上的 memory 是 16 GB。 Dask是否进行批量计算? 它是否持久保存到磁盘然后从磁盘读取? 怎么了?

对于您的第一个问题,这似乎是在 Dask 中编写查询的一种有效方法,尽管鉴于 s3 存储桶不是公开的,因此很难测试。 您的任何操作都不需要改组,因此它们都应该相当便宜。 对于第二个问题,答案基本上是肯定的,因为您正在下载的数据集大于可用的 memory,因此 Dask 将溢出到磁盘。 微调 Dask 如何管理 memory 有点棘手,如果您有兴趣, 这里还有更多内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM