我正在尝试还原一些以镶木地板格式保存的历史备份文件,我想从它们中读取一次并将数据写入PostgreSQL数据库。
我知道备份文件是使用spark保存的,但是对我来说有一个严格的限制,即我不能在数据库计算机中安装spark,也不能在远程计算机中使用spark读取镶木地板文件,然后使用{{1 }}。仅使用Postgres和Bash脚本,一切都需要在DB计算机上进行,并且在没有spark和Hadoop的情况下进行。
我的文件结构类似于:
spark_df.write.jdbc
我希望仅从bash和Postgres CLI读取每个镶木文件夹(如foo/
foo/part-00000-2a4e207f-4c09-48a6-96c7-de0071f966ab.c000.snappy.parquet
foo/part-00001-2a4e207f-4c09-48a6-96c7-de0071f966ab.c000.snappy.parquet
foo/part-00002-2a4e207f-4c09-48a6-96c7-de0071f966ab.c000.snappy.parquet
..
..
)中的数据和架构,使用该架构创建表并将数据写入创建的表中。
答案 0 :(得分:2)
您可以使用spark并将镶木地板文件转换为csv格式,然后将文件移动到DB计算机并通过任何工具导入。
spark.read.parquet("...").write.csv("...")
import pandas as pd
df = pd.read_csv('mypath.csv')
df.columns = [c.lower() for c in df.columns] #postgres doesn't like capitals or spaces
from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@localhost:5432/dbname')
df.to_sql("my_table_name", engine)