编程语言
首页 > 编程语言> > python – 将Pandas数据帧转换为Spark数据帧错误

python – 将Pandas数据帧转换为Spark数据帧错误

作者:互联网

我正在尝试将Pandas DF转换为Spark.
DF头:

10000001,1,0,1,12:35,OK,10002,1,0,9,f,NA,24,24,0,3,9,0,0,1,1,0,0,4,543
10000001,2,0,1,12:36,OK,10002,1,0,9,f,NA,24,24,0,3,9,2,1,1,3,1,3,2,611
10000002,1,0,4,12:19,PA,10003,1,1,7,f,NA,74,74,0,2,15,2,0,2,3,1,2,2,691

码:

dataset = pd.read_csv("data/AS/test_v2.csv")
sc = SparkContext(conf=conf)
sqlCtx = SQLContext(sc)
sdf = sqlCtx.createDataFrame(dataset)

我收到一个错误:

TypeError: Can not merge type <class 'pyspark.sql.types.StringType'> and <class 'pyspark.sql.types.DoubleType'>

解决方法:

您需要确保您的pandas数据帧列适用于spark推断的类型.如果您的pandas数据框列出如下内容:

pd.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5062 entries, 0 to 5061
Data columns (total 51 columns):
SomeCol                    5062 non-null object
Col2                       5062 non-null object

你得到的错误尝试:

df[['SomeCol', 'Col2']] = df[['SomeCol', 'Col2']].astype(str)

现在,确保.astype(str)实际上是您希望这些列的类型.基本上,当底层Java代码试图从python中的对象推断出类型时,它使用一些观察并猜测,如果该猜测不适用于它试图从pandas转换为列的所有列中的数据火花会失败.

标签:python,apache-spark,pandas,spark-dataframe
来源: https://codeday.me/bug/20190930/1835126.html