Databricks:从pandas创建spark Dataframe 时出现问题

xfb7svmp  于 2023-04-07  发布在  Apache
关注(0)|答案(2)|浏览(248)

我有一个pandas Dataframe ,我想转换成spark Dataframe 。通常,我使用下面的代码从pandas创建spark Dataframe ,但突然我开始得到下面的错误,我知道pandas把iteritems移走了()但我目前的pandas版本是2. 0. 0,我也试图安装较低的版本,并试图创建Sparkdf,但我仍然得到同样的错误。这个错误在spark函数内部调用。这个问题的解决方案是什么?为了创建spark df,我应该安装哪个pandas版本。我还试图改变集群数据块的运行时,并尝试重新运行,但我仍然得到同样的错误。

import pandas as pd
spark.createDataFrame(pd.DataFrame({'i':[1,2,3],'j':[1,2,3]}))

error:-
UserWarning: createDataFrame attempted Arrow optimization because 'spark.sql.execution.arrow.pyspark.enabled' is set to true; however, failed by the reason below:
  'DataFrame' object has no attribute 'iteritems'
Attempting non-optimization as 'spark.sql.execution.arrow.pyspark.fallback.enabled' is set to true.
  warn(msg)
AttributeError: 'DataFrame' object has no attribute 'iteritems'
bnl4lu3b

bnl4lu3b1#

这与所使用的Databricks Runtime(DBR)版本有关-DBR12.2之前的Spark版本依赖.iteritems函数从Pandas DataFrame构造Spark DataFrame。此问题在DBR13.x版本的Spark 3.4中得到修复。
如果你不能升级到DBR 13.x,那么你需要在笔记本电脑上使用%pip install -U pandas==1.5.3命令将Pandas降级到最新的1.x版本(现在是1.5.3)。虽然使用DBR附带的Pandas版本更好-它已经测试过与DBR中其他软件包的兼容性。

yfjy0ee7

yfjy0ee72#

由于缺少“iteritems”属性,Arrow优化失败。您应该尝试在Spark会话中禁用Arrow优化,并创建不带Arrow优化的DataFrame。
下面是它的工作原理:

import pandas as pd
from pyspark.sql import SparkSession

# Create a Spark session
spark = SparkSession.builder \
    .appName("Pandas to Spark DataFrame") \
    .getOrCreate()

# Disable Arrow optimization
spark.conf.set("spark.sql.execution.arrow.pyspark.enabled", "false")

# Create a pandas DataFrame
pdf = pd.DataFrame({'i': [1, 2, 3], 'j': [1, 2, 3]})

# Convert pandas DataFrame to Spark DataFrame
sdf = spark.createDataFrame(pdf)

# Show the Spark DataFrame
sdf.show()

它应该工作,但如果你愿意,你也可以降级你的Pandas版本的箭头优化一样,pip install pandas==1.2.5

相关问题