Как создать несколько файлов в Parquet с помощью Python параллельноPython

Программы на Python
Ответить
Anonymous
 Как создать несколько файлов в Parquet с помощью Python параллельно

Сообщение Anonymous »

У меня есть следующий код, который может выполнить один запрос и создать один файл паркета

Код: Выделить всё

import pandas as pd
from simple_salesforce import Salesforce
import pyarrow as pa
import pyarrow.parquet as pq

sf = Salesforce(username= 'username',
password='password',
security_token='token',
instance_url = 'instance',
domain='test')

Final_data = []

SFquery = ("select Id, Name from Salesforce limit 10")
response=sf.query_all(SFquery)

##formating the table for BQ##
for i in response['records']:
print(i)

df=pd.DataFrame(response['records']).drop(['attributes'], axis=1)
df=df.reset_index(drop=True)
pd.set_option('display.max_columns', 100)
pd.set_option('expand_frame_repr',True)
Pre_final = df.values.tolist()
Final_data = Final_data + Pre_final

table = pa.Table.from_pandas(df)

# Write Arrow Table to Parquet file with additional parameters
pq.write_table(table, 'output_pyarrow_custom.parquet', compression='snappy',
flavor='spark', version='2.0')

# Read the Parquet file using PyArrow
table = pq.read_table('salesforce.parquet')
df = table.to_pandas()
print(df)
тогда у меня есть этот скрипт, который может параллельно запускать сценарии SF
import pandas as pd
from simple_salesforce import Salesforce
from datetime import datetime
from google.cloud import secretmanager
from multiprocessing.pool import ThreadPool
import time
import multiprocessing

def run_query(sf, query):
result = sf.query(query)
return result

if __name__ == '__main__':
sf = Salesforce(username= username,
password=password,
security_token=token,
instance_url = instance,
domain='test')

queries = ["select Id, Name from SF1",
"select Id, Name from SF2"]

pool = multiprocessing.Pool(processes=2)
results = pool.starmap(run_query,[(sf,q) for q in queries])
pool.close()
pool.join()

for results in results:
print(results)
< /code>
Но у меня возникают проблемы с объединением. Как я могу запустить его параллельно и создать отдельные паркетные файлы на основе количества заполненных его запросов. Таким образом, в этом случае это создаст два файла паркета .. sf1 и sf2.

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-parallel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»