pyspark 页面错误:toPandas试图优化Arrow

hi3rlvi2  于 2023-02-03  发布在  Spark
关注(0)|答案(2)|浏览(225)

当我设置pyarrow为true时,我们使用spark会话,但当我运行toPandas()时,它抛出错误:

"toPandas attempted Arrow optimization because 'spark.sql.execution.arrow.enabled' is set to true. Please set it to false to disable this"

我能知道为什么会这样吗?

kgsdhlau

kgsdhlau1#

默认情况下,PyArrow是禁用的,但在您的情况下,它似乎是启用的,您必须从当前的spark应用程序会话或从Spark配置文件中永久地手动禁用此配置。
如果您想对所有Spark会话禁用此功能,请将下面的行添加到SPARK_HOME/conf/spark-defaults .conf. spark.sql.execution.arrow.enabled=false的Spark配置中
但我会建议使用PyArrow如果你是在你的spark应用程序中使用Pandas,它会加快spark和Pandas之间的数据转换。
关于PyArrow的更多信息,请访问我的blog

zaq34kh6

zaq34kh62#

我在派洛也遇到过同样的问题。
我的环境:

  • Python 3.6语言
  • 赛车场2.4.4
  • 派罗4.0.1
  • 木星笔记本
  • GCS上的Spark簇

当我尝试像这样启用Pyarrow优化时:
spark.conf.set('spark.sql.execution.arrow.enabled', 'true')
我收到以下警告:
createDataFrame attempted Arrow optimization because 'spark.sql.execution.arrow.enabled' is set to true; however failed by the reason below: TypeError: 'JavaPackage' object is not callable
我通过以下方法解决了这个问题:
1.已打印Spark会话的配置:

import  os
from pyspark import SparkConf

spark_config = SparkConf().getAll()
for conf in spark_config:
    print(conf)

这将打印Spark配置的键-值对。
1.在以下键值对中找到了我的jar文件的路径:
('spark.yarn.jars', 'path\to\jar\files')
1.找到jar文件所在的路径后,我为Pyarrow打印了jar文件的名称,如下所示:

jar_names = os.listdir('path\to\jar\files')
for jar_name in jar_names:
    if 'arrow' in jar_name:
        print(jar_name)

找到以下jar:

arrow-format-0.10.0.jar
arrow-memory-0.10.0.jar
arrow-vector-0.10.0.jar

1.然后在spark会话配置中添加arrow jar的路径:要添加多个jar文件路径,请使用:作为分隔符。
spark.conf.set('spark.driver.extraClassPath', 'path\to\jar\files\arrow-format-0.10.0.jar:path\to\jar\files\arrow-memory-0.10.0.jar:path\to\jar\files\arrow-vector-0.10.0.jar')
1.然后重新启动内核,Pyarrow优化工作正常

相关问题