apache-spark - 如何使用 spark-csv 包在 HDFS 上仅读取 n 行大型 CSV 文件?

标签 apache-spark pyspark hdfs apache-spark-sql spark-csv

我在 HDFS 上有一个很大的分布式文件,每次我将 sqlContext 与 spark-csv 包一起使用时,它首先加载整个文件,这需要相当长的时间。

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 中 n_rows 相当于 pandas,例如:
pd_df = pandas.read_csv("file_path", nrows=20)

或者可能是 spark 实际上没有加载文件,第一步,但在这种情况下,为什么我的文件加载步骤花费了太多时间呢?

我想要
df.count()

只给我 n不是所有的行,有可能吗?

最佳答案

您可以使用 limit(n) .

sqlContext.format('com.databricks.spark.csv') \
          .options(header='true', inferschema='true').load("file_path").limit(20)

这将只加载 20 行。

关于apache-spark - 如何使用 spark-csv 包在 HDFS 上仅读取 n 行大型 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44277019/

相关文章:

apache-spark - 如何配置 alb 在故障转移后指向新的主实例 (EMR)

scala - 如何使用一个或多个 StructType 创建模式(StructType)?

python - 从 PySpark 中的 Dataframe 列获取最后/分隔值

hadoop - MrJob 花费大量时间 Copy local files into hdfs

hadoop - 在 hdfs 文件上运行 awk 脚本并将结果文件保存在 hdfs 中

python - 将标准 python 键值字典列表转换为 pyspark 数据框

apache-spark - 从 EMR 中的 Spark 默认类路径中删除 JAR

dataframe - 为什么 pyspark 中的数据帧的最大值不正确?

performance - Spark 示例程序运行很慢

hadoop - 有没有办法将数据从redshift加载到HDFS?