擅长:python、mysql、java
<p>Spark数据帧不能像您编写的那样被索引。您可以使用head方法创建取n个顶行。这将返回Row()对象的列表,而不是数据帧。因此,您可以将它们转换回dataframe,并使用从原始dataframe中减去来获取其余行。</p>
<pre><code>#Take the 100 top rows convert them to dataframe
#Also you need to provide the schema also to avoid errors
df1 = sqlContext.createDataFrame(df.head(100), df.schema)
#Take the rest of the rows
df2 = df.subtract(df1)
</code></pre>
<p>如果使用spark 2.0+,也可以使用SparkSession而不是spark sqlContext。另外,如果您对前100行不感兴趣,并且希望进行随机拆分,则可以使用<a href="http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.randomSplit" rel="noreferrer">randomSplit</a>如下:</p>
<pre><code>df1,df2 = df.randomSplit([0.20, 0.80],seed=1234)
</code></pre>