Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 如何读取Spark中的多行元素?_Hadoop_Apache Spark_Hdfs - Fatal编程技术网

Hadoop 如何读取Spark中的多行元素?

Hadoop 如何读取Spark中的多行元素?,hadoop,apache-spark,hdfs,Hadoop,Apache Spark,Hdfs,当您使用sc.textfile在Spark中读取文件时,它将为您提供元素,其中每个元素都是单独的一行。但是,我希望每个元素由N行组成。我也不能使用分隔符,因为该文件中没有分隔符。那么,如何让spark给我多行元素呢 我对使用NLineInputFormat类实现这一点很感兴趣。有可能在Spark中这样做吗?我可以看到MapReduce的例子,但我不知道这将如何转化为Spark。是的,如果您是从hadoop获取文件的话。您应该能够这样做: val records = sc.newAPIHadoop

当您使用sc.textfile在Spark中读取文件时,它将为您提供元素,其中每个元素都是单独的一行。但是,我希望每个元素由N行组成。我也不能使用分隔符,因为该文件中没有分隔符。那么,如何让spark给我多行元素呢


我对使用NLineInputFormat类实现这一点很感兴趣。有可能在Spark中这样做吗?我可以看到MapReduce的例子,但我不知道这将如何转化为Spark。

是的,如果您是从hadoop获取文件的话。您应该能够这样做:

val records = sc.newAPIHadoopRDD(hadoopConf,classOf[NLineInputFormat],classOf[LongWritable],classOf[Text])

这是@MateuszDymczyk的。

可能的副本,我想使用NLineInputFormat类来完成。这就是我的问题的不同之处。那些是hadoop文件吗?是的,hadoop文件,因为它们位于HDFS中。谢谢你的回答。但是如何指定行数呢?在hadoop配置中,就像在MapReduce中使用它一样,这样的东西是正确的吗?val c=新配置(sc.hadoopConfiguration);c、 设置(“lineinputformat.linesMap”,1000);是的,这对我很有用。尝试一下,如果有什么改变,但它不起作用,请发表评论。