hadoop1版本中提供了获取文件名的功能,就是在map阶段可以获取每一行记录属于哪个文件,可以得到这个文件名,代码如下:
//获取文件名
InputSplit inputSplit=(InputSplit)context.getInputSplit();
String filename=((FileSplit)inputSplit).getPath().getName();
这是hadoop1版本提供的方法。
对于spark也可以实现这个功能,使用的方式是本地测试的代码,spark在本地执行的,代码如下:
object Mytest3 {
def main(args: Array[String]): Unit = {
val conf=new SparkConf
conf.setMaster("local[2]").setAppName("mytest")
System.setProperty("hadoop.home.dir","E:\\hadoop2\\hadoop-2.6.0")
val sc=new SparkContext(conf)
val fileRDD=sc.hadoopFile[LongWritable, Text, TextInputFormat]("C:\\sparksplit\\*")
val hadoopRdd = fileRDD.asInstanceOf[HadoopRDD[LongWritable, Text]]
val fileAndLine = hadoopRdd.mapPartitionsWithInputSplit((inputSplit:InputSplit,iterator:Iterator[(LongWritable, Text)]) =>{
val file = inputSplit.asInstanceOf[FileSplit]
iterator.map(x=>{file.getPath.toString()+"\t"+x._2})
}
)
fileAndLine.foreach(println)
}
}
这里要注意的是,引入的jar包不要错,错误的话,方法就会报错。引入的jar包是下面的:
import cn.wjpt.AuditLogManager
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.hadoop.mapred.lib.MultipleTextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.LongWritable
import org.apache.spark.rdd.HadoopRDD
import org.apache.hadoop.mapred.InputSplit
import org.apache.hadoop.mapred.FileSplit
import org.apache.hadoop.mapred.TextInputFormat
这样就搞定了。
分享到:
相关推荐
文件名中的'hadoop2.6.0'表明此版本的Spark是与Hadoop 2.6.0版本兼容的。这意味着它可以无缝地运行在Hadoop YARN或HDFS之上,充分利用Hadoop的分布式存储和计算能力。 4. 使用场景: - 开发者在编写Spark程序时,...
文件名: spark-3.4.1-bin-hadoop3.tgz 这是 Apache Spark 3.4.1 版本的二进制文件,专为与 Hadoop 3 配合使用而设计。Spark 是一种快速、通用的集群计算系统,用于大规模数据处理。这个文件包含了所有必要的组件,...
Spark在这样的环境中可以作为Hadoop的数据处理引擎,通过YARN(Hadoop的资源管理系统)或者其他集群管理器调度任务,实现高效的数据处理和分析。Spark提供了丰富的API,支持Java、Scala、Python和R语言,便于开发者...
Spark 2.0.2 是一个重要的大数据处理框架,它由 Apache Software ...在实际工作中,根据具体需求选择合适的工作模式,如本地开发、单机多核、多节点集群等,灵活运用 Spark 的功能,实现高效的数据处理和分析。
在压缩包子文件的文件名"spark-assembly_2.9.3-0.8.1-incubating-hadoop2.2.0"中,我们可以解读出以下信息: - "spark-assembly":这是Spark的聚合JAR文件,包含了所有依赖项,用于运行Spark应用。 - "2.9.3":这...
此外,Hadoop生态系统还包括其他工具,如Hive用于数据仓库,Pig用于数据处理,HBase用于实时查询,以及Spark用于更快速的数据处理和分析,这些可能都在这个系统中有所应用。 【压缩包子文件的文件名称列表】:...
根据提供的文件名"分析-201806021513-刘一之--实验.docx"和"分析-201806021513-刘一之--作业.docx",我们可以推测这些文档可能包含了刘一之同学在2018年6月2日进行的Hadoop实验的详细步骤、数据分析结果以及作业解答...
MapReduce是一种分布式计算模型,由Google提出,Hadoop对其进行了实现。在MapReduce中,数据处理分为两个主要阶段:Map阶段和Reduce阶段。Map阶段将原始数据分解成小块,然后对每个小块进行并行处理;Reduce阶段则...
2. **测试操作**:在Spark REPL环境中执行一些简单的Spark操作,如读取文件、进行转换和行动操作等,以进一步验证Spark的功能。 请注意,以上步骤是基于Linux环境的通用安装配置流程。根据具体的环境和需求,可能...
首先,从描述中可以看出,Spark 2.1.0的下载链接是通过`wget`命令在终端中获取的。`wget`是一个在Linux和Unix-like操作系统中广泛使用的工具,用于从Web服务器下载文件。在输入`wget`后,你需要粘贴Spark的下载URL,...
Hadoop的生态系统还包括其他组件,如Hive(数据仓库工具)、Pig(数据分析平台)、Spark(快速大数据处理框架)等,它们共同构建了一个强大的大数据处理平台。 总之,这个“hadoop-2.7.7.zip”压缩包为Windows用户...
《Hadoop实战源代码》(HadoopinAction_source_code)是针对大数据处理框架Hadoop的一份珍贵资源,其中包含了从知名书籍《Hadoop in Action》官网获取的实际代码示例。这些示例涵盖了Hadoop的核心组件及其应用,为...
压缩包内的文件名 "Hive_learn.key" 提示我们重点会聚焦在Hive上,Hive是基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供SQL查询功能。它适合大规模数据集的离线批处理分析。 现在,...
4. **Hadoop生态组件**: Hadoop生态系统包括众多项目如HBase(分布式NoSQL数据库)、Hive(数据仓库工具)、Pig(高级数据流语言)、Spark(快速通用的大数据处理引擎)等,它们共同扩展了Hadoop的功能。 **Hadoop...
YARN允许在Hadoop集群中运行多种计算框架,如Spark、Tez等,进一步增强了Hadoop的灵活性。 文件名`hadoop-2.7.0-src.tar.gz.asc`是一个GPG签名文件,用于验证下载的源代码包的完整性和真实性,确保未被篡改。`...
7. 高级主题:可能涉及Hadoop与其他组件如HBase、Hive、Pig的集成,以及Spark等新一代大数据处理工具的对比。 总之,"8天Hadoop大数据"教程为初学者提供了一条快速学习Hadoop的途径,通过理论与实践相结合的方式,...
在这个Spark 2.3.2的安装包中,主要文件名"spark-2.3.2-bin-hadoop2.7"揭示了几个关键信息: 1. **Spark版本**:2.3.2表示这是Spark的第2个主要版本、第3次次要更新和第2次补丁发布。在版本管理中,这通常意味着它...
YARN引入了资源管理器、节点管理器以及应用程序历史服务器等概念,使得在Hadoop上运行的计算框架不仅仅是MapReduce,也可以是其他框架,如Spark。 Hadoop的生态系统还包括Hive、HBase、Pig、Zookeeper等多种工具和...
同时,熟悉Hadoop生态系统中的其他工具,如Hive(数据仓库工具)、Pig(数据分析工具)、Spark(快速数据处理引擎)等,可以进一步提升大数据处理能力。 总之,"hadoop-windows本地库版"为Windows用户提供了一种...
标签"hadoop-2.6"进一步确认了这个压缩包与Hadoop 2.6版本有关,这是Hadoop发展过程中的一个重要版本,引入了许多性能优化和功能增强,比如YARN资源管理器的改进,使得Hadoop更加适合大规模的数据处理需求。...