PySpark之Apache Arrow高性能数据传输框架

一、介绍

  • Apache Arrow是Apache基金会全新孵化的一个顶级项目。一个跨平台的在内存中以列式存储的数据层,它设计的目的在于作为一个跨平台的数据层,来加快大数据分析项目的运行速度
  • Pandas建立在ApacheArrow之上,带来了低开销,高性能的udf
  • Apache Arrow是一种内存中的列式数据格式,用于Spark中以JVM和Python进程之间有效地传输数据。

二、安装

  • pip install pysaprk[sql]

三、使用

  • spark.conf.set(“spark.sql.execution.arrow.enabled”,“true”)

四、启用与pandas的转换

  • 在使用调用将 Spark DataFrame 转换为 Pandas DataFrame 以及使用DataFrame.toPandas().pandas DataFrame 从 Pandas DataFrame 创建 Spark DataFrame 时, Arrow 可用作优化SparkSession.createDataFrame()。要在执行这些调用时使用 Arrow,用户需要首先将 Spark 配置设置spark.sql.execution.arrow.pyspark.enabled为true. 默认情况下禁用此功能。

  • 此外,spark.sql.execution.arrow.pyspark.enabled如果在 Spark 中的实际计算之前发生错误,则启用的优化可以自动回退到非 Arrow 优化实现。这可以通过下面命令来控制:spark.sql.execution.arrow.pyspark.fallback.enabled。

  • 对 Arrow 使用上述优化将产生与未启用 Arrow 时相同的结果,但是效率提升很多。

    请注意,即使使用 Arrow,也会DataFrame.toPandas()导致将 DataFrame 中的所有记录收集到驱动Driver程序中。当前并非所有 Spark 数据类型都受支持,如果列具有不受支持的类型,则会引发错误。如果在运行期间发生错误SparkSession.createDataFrame(),Spark 将回退以创建没有 Arrow 的 DataFrame

你可能感兴趣的:(Spark计算引擎,apache,spark,big,data)