读取数据帧时出现火花错误

2024-04-26 00:16:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读取我创建的Spark数据帧的第一行,如下所示:

#read file    
datasetDF = sqlContext.read.format('com.databricks.spark.csv').options(delimiter=';', header='true',inferschema='true').load(dataset)
#vectorize
ignore = ['value']
vecAssembler = VectorAssembler(inputCols=[x for x in datasetDF.columns if x not in ignore], outputCol="features")
#split training - test set
(split20DF, split80DF) = datasetDF.randomSplit([1.0, 4.0],seed)
testSetDF = split20DF.cache()
trainingSetDF = split80DF.cache()

print trainingSetDF.take(5)

但是,如果我运行这段代码,我会得到以下错误(由最后一行打印引起训练集(5)

^{pr2}$

我需要补充的是,只有当我有很多特性(超过256个)时才会发生这种情况。 我做错什么了?在

谢谢, 弗洛伦特


Tags: 数据incomtrueformatcachereadspark
1条回答
网友
1楼 · 发布于 2024-04-26 00:16:00

如果你有一个ID变量可以用来连接数据,我找到了一个解决宽数据上randomSplit()错误的方法(如果你不能在拆分之前很容易地创建一个,并且仍然使用这个解决方法)。确保为分割的部分创建单独的变量名,并且不要使用相同的变量名(我使用train1/valid1),否则您将得到相同的错误,因为我认为它只是指向同一个RDD。这可能是我见过的最愚蠢的虫子之一。我们的数据甚至没有那么广泛。在

Y            = 'y'
ID_VAR       = 'ID'
DROPS        = [ID_VAR]

train = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('s3n://emr-related-files/train.csv')
test = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('s3n://emr-related-files/test.csv')
train.show()
print(train.count)

(train1,valid1) = train.select(ID_VAR).randomSplit([0.7,0.3], seed=123)
train = train1.join(train,ID_VAR,'inner')
valid = valid1.join(train, ID_VAR,'inner')

train.show()

相关问题 更多 >