spark rdd map java_如何在spark RDD(JavaRDD)中获取记录的文件名
我正在使用多个文件加载到
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)中获取记录的文件名相关推荐
- 服务器如何获取客户端证书,如何在Go HTTPS服务器中获取客户端证书
我在尝试了解如何在Go Web服务器中获取客户端证书.这里是一个服务器代码:如何在Go HTTPS服务器中获取客户端证书 package main import ( "log" & ...
- 头信息_如何在 Spring REST Controller 中获取 HTTP 头信息
介绍 在本篇文章中,我们将研究如何在 Spring Rest Controller 中访问 HTTP 头信息. 首先,我们将使用 @RequestHeader 注解分别或同时读取 HTTP 头信息. ...
- 如何在Windows 8.1中获取Windows 10样式的开始菜单
On January 21, Microsoft officially announced the new features that would be included in Windows 10. ...
- 如何在Windows、Linux中获取主机的网络信息和公网地址
在我们的日常工作中,我们会需要进行查询主机当下的网络信息和公网上看到的IP地址信息,他们就像是网路上的名片,让我们找到彼此. Windows下如何获取内网和公网信息 在windows下该如何获取网路信 ...
- 如何在 ASP.NET CORE 中获取客户端 IP ?
咨询区 eadam: 在 ASP.NET 中我可以用 Request.ServerVariables["REMOTE_ADDR"] 来获取客户端IP地址,请问在 ASP.NET C ...
- php 访问url获得返回值,如何在curl php请求中获取数组值作为返回值?
我很难使用curl PHP,因为我是 PHP新手.问题是我没有从curl请求中获得任何返回值.我正在访问的远程文件具有以下代码: test.php的: $test->getCall(); pub ...
- java html2text_java-如何在html / text内容中获取文本?
大家好 我有html / text之类的东西: first text one: second texttwo: third textthree: fourth textfive: fifth text ...
- android获取上下文对象,如何在Android服务类中获取上下文
当我尝试从内存中读取 XML文件并进入对象时,我收到以下错误.看起来像获取上下文的问题.谁能告诉我我的代码有什么问题? 码: public class WifiScanning extends Ser ...
- spark convert RDD[Map] to DataFrame
将RDD[Map[String,String]] 转化为展平 DataFrame,类似于pyspark 中 dict 结构toDF的效果. input val mapRDD: RDD[Map[Stri ...
最新文章
- HDFS块文件和存放目录的关系
- linux中断程序快捷键,linux命令行快捷键
- 40个Java 多线程问题总结
- Net4.0---对HTML净化的处理
- CV之Harris特征点检测器-兴趣点检测(详解)
- python免费领取视频-最经典Python爬虫全套视频免费领,带你从0开始学爬虫
- java transactions数组_java里面Transaction transaction = (Transaction)(list.get(i));是什么意思...
- 摸鱼摸累了,看几个有趣的网站
- 小趣味:js编写斗地主规则(完整代码)
- 机器学习|切比雪夫不等式(3sigma原则来源)|10mins入门|概统学习笔记(十)
- VR家庭火灾安全系统_VR校园火灾安全系统_VR工厂火灾安全系统_VR宿舍火灾安全系统多场景选择
- HDS日立 (高中低端)存储
- linux桌面图标恢复,修复桌面白图标的教程
- day16-20180705-流利阅读笔记
- ncre计算机职业英语,NCRE计算机职业英语一级考试样卷.doc
- 51CTO学院学习心得
- 【MATLAB】改变坐标轴范围
- Pytest fixture实现测试用例前置后置操作
- 什么是交换?路由?路由交换?
- javase_test_day13