如何多进程读进odps数据?
import multiprocessing
n_process = 4
data_list = []
with odps_connector.execute_sql(sql).open_reader(tunnel=True) as reader:
# n_process 指定成机器核数
pd_df = reader.to_pandas(n_process=n_process)
data_list.append(pd_df)
df = pd.concat(data_list)
我测试过多进程数指定成8或者4并没有多大区别,可能是数据量还不够大。
jupyter lab一次读odps表有大小限制怎么办?
首先sql语句要有oder by(后面就知道为什么要这样了,因为要通过limit不断读表)
sql = '''
select *
from table1
order by name
limit {start},1000000
'''
随后开始读odps表,这里假设有10000000条数据,这个数是可以比实际数据量大的。
start_idx = [0,1000000,2000000,3000000,4000000,5000000,6000000,7000000,8000000,9000000]
接下来这样就可以了
data_list = []
import tqdm
for i in tqdm.tqdm_notebook(start_idx):
s1 = sql.format(start = str(i))
df = get_sql_res(s1)
data_list.append(df)
total_df = pd.concat(data_list)