由于即使使用较新的pandas版本,这似乎仍然是一个问题,因此我编写了一些函数来规避此问题,这是更大的pyspark helpers库的一部分:
import pandas as pdimport datetimedef read_parquet_folder_as_pandas(path, verbosity=1): files = [f for f in os.listdir(path) if f.endswith("parquet")] if verbosity > 0: print("{} parquet files found. Beginning reading...".format(len(files)), end="") start = datetime.datetime.now() df_list = [pd.read_parquet(os.path.join(path, f)) for f in files] df = pd.concat(df_list, ignore_index=True) if verbosity > 0: end = datetime.datetime.now() print(" Finished. Took {}".format(end-start)) return dfdef read_parquet_as_pandas(path, verbosity=1): """Workaround for pandas not being able to read folder-style parquet files. """ if os.path.isdir(path): if verbosity>1: print("Parquet file is actually folder.") return read_parquet_folder_as_pandas(path, verbosity) else: return pd.read_parquet(path)
这假定拼花地板“文件”中的相关文件(实际上是一个文件夹)以“
.parquet”结尾。这适用于数据砖导出的拼花文件,也可以与其他文件一起使用(未经测试,对评论中的反馈感到高兴)。
read_parquet_as_pandas()如果事先不知道是否为文件夹,则可以使用该功能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)