如何使用Spark快速从map()中的HDFS中读取文件

haochi zhang

我需要在每个map()中读取一个不同的文件,该文件在HDFS中

  val rdd=sc.parallelize(1 to 10000)
  val rdd2=rdd.map{x=>
    val hdfs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI("hdfs://ITS-Hadoop10:9000/"), new org.apache.hadoop.conf.Configuration())
    val path=new Path("/user/zhc/"+x+"/")
    val t=hdfs.listStatus(path)
    val in =hdfs.open(t(0).getPath)
    val reader = new BufferedReader(new InputStreamReader(in))
    var l=reader.readLine()
  }
 rdd2.count

我的问题是这段代码

val hdfs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI("hdfs://ITS-Hadoop10:9000/"), new org.apache.hadoop.conf.Configuration())

需要太多的运行时间,每次map()都需要创建一个新的FileSystem值。我可以将这段代码放在map()函数之外,这样就不必每次都创建hdfs了吗?或者如何在map()中快速读取文件?

我的代码在多台机器上运行。谢谢!

用户名

在您的情况下,我建议使用wholeTextFileswich方法将返回pairRdd,其键是文件的完整路径,而值是字符串中文件的内容。

val filesPariRDD = sc.wholeTextFiles("hdfs://ITS-Hadoop10:9000/")
val filesLineCount = filesPariRDD.map( x => (x._1, x._2.length ) ) //this will return a map of fileName , number of lines of each file. You could apply any other function on the file contents
filesLineCount.collect() 

编辑

如果文件位于同一目录下的目录中(如注释中所述),则可以使用某种正则表达式

val filesPariRDD = sc.wholeTextFiles("hdfs://ITS-Hadoop10:9000/*/")

希望这是清楚和有用的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Spark快速从map()中的HDFS中读取文件

来自分类Dev

如何在Spark中读取HDFS序列文件

来自分类Dev

Spark仅在HDFS中读取

来自分类Dev

无法在Spark中使用HDFS中的文件

来自分类Dev

spark-scala:如何从 .dat 文件读取数据转换它并最终存储在 HDFS 中

来自分类Dev

Spark流无法读取从HDFS中的水槽创建的文件

来自分类Dev

在Spark中从HDFS或S3读取边缘DB文件

来自分类Dev

在 Scala/Spark 中从 HDFS 读取文本文件

来自分类Dev

如何使用wholeTextFiles在Spark中读取gz文件

来自分类Dev

如何使用wholeTextFiles在Spark中读取gz文件

来自分类Dev

如何使用Spark Streaming从序列文件中读取数据

来自分类Dev

从pyspark读取hdfs中的文件

来自分类Dev

无法使用Spark从HDFS读取文件

来自分类Dev

如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

来自分类Dev

如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

来自分类Dev

HDFS中的文件如何处理Spark分区?

来自分类Dev

使用Apache Spark从HDFS序列文件中创建键值对

来自分类Dev

使用Apache Spark在HDFS中存储多个文件

来自分类Dev

使用Spark Streaming + Kafka的HDFS中的空文件夹

来自分类Dev

如何在 spark 中解析 json 文件?以及如何在 spark 或 hdfs 中插入 dynamo DB?

来自分类Dev

如何使用Java中的套接字快速读取数据?

来自分类Dev

在Spark Java API中以递归方式从HDFS读取所有文件

来自分类Dev

从巨大的文件中读取特定的行*快速*

来自分类Dev

在Spark中处理json文件的快速方法

来自分类Dev

如何使用Boost从文件中读取图形?

来自分类Dev

如何使用purrr中的map_ *函数读取多个文件以保存并计数每个文件中的变量数?

来自分类Dev

如何使用Java在HDFS中创建和填充Parquet文件?

来自分类Dev

在spark中读取文件时存储文件

来自分类Dev

使用`purrr:map()`读取目录中的所有csv文件

Related 相关文章

  1. 1

    如何使用Spark快速从map()中的HDFS中读取文件

  2. 2

    如何在Spark中读取HDFS序列文件

  3. 3

    Spark仅在HDFS中读取

  4. 4

    无法在Spark中使用HDFS中的文件

  5. 5

    spark-scala:如何从 .dat 文件读取数据转换它并最终存储在 HDFS 中

  6. 6

    Spark流无法读取从HDFS中的水槽创建的文件

  7. 7

    在Spark中从HDFS或S3读取边缘DB文件

  8. 8

    在 Scala/Spark 中从 HDFS 读取文本文件

  9. 9

    如何使用wholeTextFiles在Spark中读取gz文件

  10. 10

    如何使用wholeTextFiles在Spark中读取gz文件

  11. 11

    如何使用Spark Streaming从序列文件中读取数据

  12. 12

    从pyspark读取hdfs中的文件

  13. 13

    无法使用Spark从HDFS读取文件

  14. 14

    如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

  15. 15

    如何使用Java有效读取Hadoop(HDFS)文件中的第一行?

  16. 16

    HDFS中的文件如何处理Spark分区?

  17. 17

    使用Apache Spark从HDFS序列文件中创建键值对

  18. 18

    使用Apache Spark在HDFS中存储多个文件

  19. 19

    使用Spark Streaming + Kafka的HDFS中的空文件夹

  20. 20

    如何在 spark 中解析 json 文件?以及如何在 spark 或 hdfs 中插入 dynamo DB?

  21. 21

    如何使用Java中的套接字快速读取数据?

  22. 22

    在Spark Java API中以递归方式从HDFS读取所有文件

  23. 23

    从巨大的文件中读取特定的行*快速*

  24. 24

    在Spark中处理json文件的快速方法

  25. 25

    如何使用Boost从文件中读取图形?

  26. 26

    如何使用purrr中的map_ *函数读取多个文件以保存并计数每个文件中的变量数?

  27. 27

    如何使用Java在HDFS中创建和填充Parquet文件?

  28. 28

    在spark中读取文件时存储文件

  29. 29

    使用`purrr:map()`读取目录中的所有csv文件

热门标签

归档