我正在使用多个文件加载到

JavaRDD中

JavaRDD allLines = sc.textFile(hdfs://path/*.csv);

加载文件后,我修改每条记录并想保存它们.但是,我还需要将原始文件名(ID)与记录一起保存以供将来参考.无论如何我可以从RDD中的单个记录中获取原始文件名吗?

谢谢

您可以尝试执行以下代码段中的操作:

JavaPairRDD javaPairRDD = sc.newAPIHadoopFile(

"hdfs://path/*.csv",

TextInputFormat.class,

LongWritable.class,

Text.class,

new Configuration()

);

JavaNewHadoopRDD hadoopRDD = (JavaNewHadoopRDD) javaPairRDD;

JavaRDD> namedLinesRDD = hadoopRDD.mapPartitionsWithInputSplit((inputSplit, lines) -> {

FileSplit fileSplit = (FileSplit) inputSplit;

String fileName = fileSplit.getPath().getName();

Stream> stream =

StreamSupport.stream(Spliterators.spliteratorUnknownSize(lines, Spliterator.ORDERED), false)

.map(line -> {

String lineText = line._2().toString();

// emit file name as key and line as a value

return new Tuple2(fileName, lineText);

});

return stream.iterator();

}, true);

更新(适用于java7)

JavaRDD> namedLinesRDD = hadoopRDD.mapPartitionsWithInputSplit(

new Function2>, Iterator>>() {

@Override

public Iterator> call(InputSplit inputSplit, final Iterator> lines) throws Exception {

FileSplit fileSplit = (FileSplit) inputSplit;

final String fileName = fileSplit.getPath().getName();

return new Iterator>() {

@Override

public boolean hasNext() {

return lines.hasNext();

}

@Override

public Tuple2 next() {

Tuple2 entry = lines.next();

return new Tuple2(fileName, entry._2().toString());

}

};

}

},

true

);

spark rdd map java_如何在spark RDD(JavaRDD)中获取记录的文件名相关推荐

  1. 服务器如何获取客户端证书,如何在Go HTTPS服务器中获取客户端证书

    我在尝试了解如何在Go Web服务器中获取客户端证书.这里是一个服务器代码:如何在Go HTTPS服务器中获取客户端证书 package main import ( "log" & ...

  2. 头信息_如何在 Spring REST Controller 中获取 HTTP 头信息

    介绍 在本篇文章中,我们将研究如何在 Spring Rest Controller 中访问 HTTP 头信息. 首先,我们将使用 @RequestHeader 注解分别或同时读取 HTTP 头信息. ...

  3. 如何在Windows 8.1中获取Windows 10样式的开始菜单

    On January 21, Microsoft officially announced the new features that would be included in Windows 10. ...

  4. 如何在Windows、Linux中获取主机的网络信息和公网地址

    在我们的日常工作中,我们会需要进行查询主机当下的网络信息和公网上看到的IP地址信息,他们就像是网路上的名片,让我们找到彼此. Windows下如何获取内网和公网信息 在windows下该如何获取网路信 ...

  5. 如何在 ASP.NET CORE 中获取客户端 IP ?

    咨询区 eadam: 在 ASP.NET 中我可以用 Request.ServerVariables["REMOTE_ADDR"] 来获取客户端IP地址,请问在 ASP.NET C ...

  6. php 访问url获得返回值,如何在curl php请求中获取数组值作为返回值?

    我很难使用curl PHP,因为我是 PHP新手.问题是我没有从curl请求中获得任何返回值.我正在访问的远程文件具有以下代码: test.php的: $test->getCall(); pub ...

  7. java html2text_java-如何在html / text内容中获取文本?

    大家好 我有html / text之类的东西: first text one: second texttwo: third textthree: fourth textfive: fifth text ...

  8. android获取上下文对象,如何在Android服务类中获取上下文

    当我尝试从内存中读取 XML文件并进入对象时,我收到以下错误.看起来像获取上下文的问题.谁能告诉我我的代码有什么问题? 码: public class WifiScanning extends Ser ...

  9. spark convert RDD[Map] to DataFrame

    将RDD[Map[String,String]] 转化为展平 DataFrame,类似于pyspark 中 dict 结构toDF的效果. input val mapRDD: RDD[Map[Stri ...

最新文章

  1. HDFS块文件和存放目录的关系
  2. linux中断程序快捷键,linux命令行快捷键
  3. 40个Java 多线程问题总结
  4. Net4.0---对HTML净化的处理
  5. CV之Harris特征点检测器-兴趣点检测(详解)
  6. python免费领取视频-最经典Python爬虫全套视频免费领,带你从0开始学爬虫
  7. java transactions数组_java里面Transaction transaction = (Transaction)(list.get(i));是什么意思...
  8. 摸鱼摸累了,看几个有趣的网站
  9. 小趣味:js编写斗地主规则(完整代码)
  10. 机器学习|切比雪夫不等式(3sigma原则来源)|10mins入门|概统学习笔记(十)
  11. VR家庭火灾安全系统_VR校园火灾安全系统_VR工厂火灾安全系统_VR宿舍火灾安全系统多场景选择
  12. HDS日立 (高中低端)存储
  13. linux桌面图标恢复,修复桌面白图标的教程
  14. day16-20180705-流利阅读笔记
  15. ncre计算机职业英语,NCRE计算机职业英语一级考试样卷.doc
  16. 51CTO学院学习心得
  17. 【MATLAB】改变坐标轴范围
  18. Pytest fixture实现测试用例前置后置操作
  19. 什么是交换?路由?路由交换?
  20. javase_test_day13

热门文章

  1. Laravel 5.1 artisan 的使用
  2. 异常信息: java.lang.ClassNotFoundException: org.aspec
  3. 如何实现CSS居中?–CSS居中常用方法
  4. 使用admodify工具修改用户主目录时的注意事项
  5. Maven 学习之旅
  6. Project Management Library项目管理甘特图控件
  7. Linux 历史命令巧用
  8. android中的5个布局方式
  9. postgresql数据库的备份与恢复
  10. CentOS安装高版本gcc