pyspark randomsplit返回null

pyspark randomsplit返回null,pyspark,apache-spark-sql,pyspark-sql,Pyspark,Apache Spark Sql,Pyspark Sql,我是spark的新手,如果我的问题很基本,我很抱歉:) 我有一个spark数据帧,我想使用randomSplit()方法将其拆分为训练集和测试集。这个任务应该很简单,但我不知道为什么它返回带有空值的dataframe。下面是我的代码: train = spark.read.csv('training.csv', header=True) train = train.withColumn("reviewerID", train["reviewerID"].cast("int")) train =

我是spark的新手,如果我的问题很基本,我很抱歉:) 我有一个spark数据帧,我想使用randomSplit()方法将其拆分为训练集和测试集。这个任务应该很简单,但我不知道为什么它返回带有空值的dataframe。下面是我的代码:

train = spark.read.csv('training.csv', header=True)

train = train.withColumn("reviewerID", train["reviewerID"].cast("int"))
train = train.withColumn("asin", train["asin"].cast("int"))
train = train.withColumn("overall", train["overall"].cast("double"))
train_selected = train.select("reviewerID", "asin", "overall")
train_selected.show(5)

+----------+-----+-------+
|reviewerID| asin|overall|
+----------+-----+-------+
|     15012|52021|    4.0|
|     20330|42867|    5.0|
|     62907| 9168|    5.0|
|     11778|26051|    4.0|
|     63717|30061|    4.0|
+----------+-----+-------+
only showing top 5 rows

splits = train_selected.randomSplit([0.8, 0.2], 13)
splits[0].show(5)

+----------+----+-----------+
|reviewerID|asin|    overall|
+----------+----+-----------+
|      null|null|       null|
|      null|null|1.3532832E9|
|      null|null| 1.353456E9|
|      null|null|1.3568256E9|
|      null|null| 1.356912E9|
+----------+----+-----------+
only showing top 5 rows

感谢您的帮助。

您是否检查了所选的
train\u
是否包含这些值?拆分后,您将没有相同的顺序,因此
show
可以显示不同的内容。我怀疑在原始数据集中,并不是所有的值都可以直接转换为您要转换的类型,因此为空。请在拆分之前和之后检查计数casting@Daniel:是的。我检查了你选择的火车,它看起来不错。我还检查了数据中是否有任何异常或空值。没什么!@Sarath我也查了一下计数。看起来不错。这没有任何意义。您是否尝试在以下行中键入“seed=13”,而不是“13”:splits=train\u selected.randomspilt([0.8,0.2],13)