我在 HDFS 上有一个大的分布式文件,每次我使用带有 spark-csv 包的 sqlContext 时,它首先加载整个文件,这需要相当长的时间。
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("file_path")
现在我有时只想快速检查一下,我只需要整个文件中的几行/任意 n 行。
df_n = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("file_path").take(n)
df_n = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load("file_path").head(n)
但所有这些都在文件加载完成后运行。我不能在读取文件本身时限制行数吗?我指的是 spark-csv 中与 pandas 等效的 n_rows,例如:
pd_df = pandas.read_csv("file_path", nrows=20)
或者可能是spark实际上并没有加载文件,第一步,但在这种情况下,为什么我的文件加载步骤花费了太多时间呢?
我想
df.count()
只给我n
而不是所有行,有可能吗?