Parquet双列无法加载到BigQuery“ UDF内存不足。;无法读取Parquet文件”

时间:2019-03-01 10:54:35

标签: python pandas google-bigquery parquet

我正在尝试将.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,会抛出相同的错误。

0 个答案:

没有答案