Я пытаюсь преобразовать книгу Excel с несколькими листами в ИЛИ C.
Сначала я запускаю следующий фрагмент кода:
import functools
import io
def pd_dfs_from_excel_rdd(rdd_record, pandas_opts):
file_path = rdd_record[0]
file_contents = rdd_record[1]
file_like_obj = io.BytesIO(file_contents)
df_dict = pd.read_excel(file_like_obj, **pandas_opts)
dfs = list()
for sheet_name, sheet_df in df_dict.items():
entry = (file_path, sheet_name, sheet_df)
dfs.append(entry)
return dfs
spark_context = None # Start your context here
excel_files_rdd = spark_context.binaryFiles(some_path)
pandas_opts = {
'sheetname': None,
'header': 1,
}
parsing_func = functools.partial(pd_dfs_from_excel_rdd, pandas_opts=pandas_opts)
parsed_excel_sheets = excel_files_rdd.flatMap(parsing_func)
Источник: http://brianstempin.com/2017/10/05/dealing-with-excel-data-in-pyspark/
Я получаю parsed_excel_sheets
, который является СДР, который содержит (путь к файлу, имя листа, лист pandas df) кортежей.
Теперь я хотите преобразовать данные Pandas в кадры PySpark и сохранить их как OR C с именем листа в качестве имени. Как я могу это реализовать?
(Автор вышеупомянутой статьи показывает, как создать один фрейм данных PySpark для всех листов, но мне нужен один фрейм данных для каждого листа.)