python

您所在的位置:网站首页 pyspark保存模型joblib文件到hdfs python

python

2024-07-16 05:13:55| 来源: 网络整理| 查看: 265

我正在使用 pandas 和 spark 数据帧。数据帧总是非常大(> 20 GB),标准的 spark 函数不足以满足这些大小。目前我正在将我的 pandas 数据框转换为这样的 spark 数据框:

dataframe = spark.createDataFrame(pandas_dataframe)

我进行这种转换是因为使用 spark 将数据帧写入 hdfs 非常容易:

dataframe.write.parquet(output_uri, mode="overwrite", compression="snappy")

但是对于大于 2 GB 的数据帧,转换失败。 如果我将 spark 数据框转换为 pandas,我可以使用 pyarrow:

// temporary write spark dataframe to hdfs dataframe.write.parquet(path, mode="overwrite", compression="snappy") // open hdfs connection using pyarrow (pa) hdfs = pa.hdfs.connect("default", 0) // read parquet (pyarrow.parquet (pq)) parquet = pq.ParquetDataset(path_hdfs, filesystem=hdfs) table = parquet.read(nthreads=4) // transform table to pandas pandas = table.to_pandas(nthreads=4) // delete temp files hdfs.delete(path, recursive=True)

这是从 spark 到 pandas 的快速转换,它也适用于大于 2 GB 的数据帧。我还找不到相反的方法。意思是有一个 pandas 数据框,我在 pyarrow 的帮助下将其转换为 spark。问题是我真的找不到如何将 pandas 数据帧写入 hdfs。

我的 Pandas 版本:0.19.0

最佳答案

Meaning having a pandas dataframe which I transform to spark with the help of pyarrow.

pyarrow.Table.fromPandas是您正在寻找的功能:

Table.from_pandas(type cls, df, bool timestamps_to_ms=False, Schema schema=None, bool preserve_index=True) Convert pandas.DataFrame to an Arrow Table import pyarrow as pa pdf = ... # type: pandas.core.frame.DataFrame adf = pa.Table.from_pandas(pdf) # type: pyarrow.lib.Table

结果可以直接写入Parquet/HDFS,无需通过Spark传递数据:

import pyarrow.parquet as pq fs = pa.hdfs.connect() with fs.open(path, "wb") as fw pq.write_table(adf, fw)

另见

@WesMcKinney answer至 read a parquet files from HDFS using PyArrow . Reading and Writing the Apache Parquet Format在pyarrow documentation . Native Hadoop file system (HDFS) connectivity in Python

Spark 笔记:

此外,自 Spark 2.3(当前主版本)以来,createDataFrame(SPARK-20791 - Use Apache Arrow to Improve Spark createDataFrame from Pandas.DataFrame)直接支持 Arrow。它uses SparkContext.defaultParallelism to compute number of chunks这样您就可以轻松控制各个批处理的大小。

最后,defaultParallelism 可用于控制使用标准 _convert_from_pandas 生成的分区数量,有效地将切片的大小减小到更易于管理的程度。

不幸的是,这些不太可能解决您的 current memory problems .两者都依赖于parallelize,因此将所有数据存储在驱动程序节点的内存中。切换到 Arrow 或调整配置只能加快进程或解决 block 大小限制。

实际上,只要您使用本地 Pandas DataFrame 作为输入,我看不出有任何理由在这里切换到 Spark。这种情况下最严重的瓶颈是驱动程序的网络 I/O,而分发数据无法解决这个问题。

关于python - 如何将巨大的 Pandas 数据框保存到 hdfs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393001/



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭