【发布时间】:2022-01-24 00:59:08
【问题描述】:
我在 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)
我有几个问题:
-
这是在
Dask中编写所述查询的最快方式吗? -
我从
S3下载的数据是 48GB。我节点上的内存是 16 GB。Dask是否进行批量计算?它是否持久保存到磁盘然后从磁盘读取?会发生什么?
【问题讨论】:
-
发生的情况是,当您在内存数据和交换到交换文件之间颠簸时,您的进程会慢到爬行。没有人会高兴。
-
这不是真的。它大量使用磁盘。事实上,内存使用率从未超过 20%。
标签: python pandas amazon-s3 dask dask-dataframe