我正在尝试将.parquet文件加载到BQ中,这些文件是python作业的输出,但是它们失败并显示以下错误:
Resources exceeded during query execution: UDF out of memory.; Failed to read Parquet file /bigstore/project/.testing/parquet_testing/filename.parquet. This might happen if the file contains a row that is too large, or if the total size of the pages loaded for the queried columns is too large.
镶木地板文件是使用默认引擎从df.to_parquet(...)
这样的熊猫编写的,尽管我已经与其他人进行了测试,并且抛出了相同的错误。我知道问题出在float64
列,就好像我将所有内容都投射到int
/ str
一样,加载成功。
要复制,Python 3.6.8, numpy==1.16.0, pandas==0.23.4, pyarrow==0.11.0
:
### To generate dummy data
### dataset size chosen on dimensions of my own data
import pandas as pd
import numpy as np
nrows = 35600000
df_rand = pd.DataFrame(
np.random.randint(0, 26, size=(nrows, 12)), columns=list('ABCDEFGHIJKL'))
df_rand["M"] = np.random.rand(len(nrows), 1)
df_rand.to_parquet("./random_with_float.parquet")
df_rand.drop(columns="M").to_parquet("./random_without_float.parquet"),
然后加载到BQ(UI或bq load
)。
没有浮子的那只在下雨时就进入了,但是有浮子的那只因上面的错误而失败了。
这一定很奇怪,即使我在UI中为以前已上传到BigQuery的表执行了reload-job
,自该表首次上载以来,其底层.parquet文件也没有被触及过到BQ,会抛出相同的错误。