在PySpark中使用Limit来获取数据帧样本?

时间:2018-08-31 21:38:12

标签: python apache-spark pyspark

schema_comment= StructType([
    StructField("id", StringType(), True),
    StructField("date", DateType(), True),
    StructField("comment", StringType(), True),

])


commentdf = (
    spark.read.limit(50)
    .format("com.databricks.spark.csv")
    .option("header", "false")
    .option("inferSchema", "false")
    .schema(schema_comment)
    .load("hdfs:///data/ghcnd/comment.csv")
)

我有一个已定义的架构,希望使用limit函数引入前X行,但是我一定使用错了。

我尝试在.read之后放置.limit()并收到一个没有属性限制的DataFrameReader对象。

我尝试定义DataFrameReader对象,然后在show()之前使用limit,但是这花费了很长时间,似乎它仍在将整个DF加载到内存中。

我应该如何使用limit()只获取X行?

1 个答案:

答案 0 :(得分:0)

错误只是limit()的位置。

应该是:

commentdf = (
    spark.read
    .format("com.databricks.spark.csv")
    .option("header", "false")
    .option("inferSchema", "false")
    .schema(schema_comment)
    .load("hdfs:///data/ghcnd/comment.csv")
    .limit(50)
)