java 读取 tgz_java – 从Spark中的压缩中读取整个文本文件
我有以下问题:假设我有一个包含压缩目录的目录,其中包含存储在HDFS上的多个文件.我想创建一个包含T类型对象的RDD,即:
context = new JavaSparkContext(conf);
JavaPairRDD filesRDD = context.wholeTextFiles(inputDataPath);
JavaPairRDD filesRDD = context.wholeTextFiles(inputDataPath);
JavaRDD processingFiles = filesRDD.map(fileNameContent -> {
// The name of the file
String fileName = fileNameContent._1();
// The content of the file
String content = fileNameContent._2();
// Class T has a constructor of taking the filename and the content of each
// processed file (as two strings)
T t = new T(content, fileName);
return t;
});
现在当inputDataPath是一个包含文件的目录时,这个工作完全正常,即它是这样的:
String inputDataPath = "hdfs://some_path/*/*/"; // because it contains subfolders
但是,当有一个包含多个文件的tgz时,文件内容(fileNameContent._2())会给我一些无用的二进制字符串(非常期待).我找到了一个similar question on SO,但情况不同,因为解决方案是每个压缩只包含一个文件,而在我的情况下,还有许多其他文件我想单独读取整个文件.我还找到了关于wholeTextFiles的question,但这在我的情况下不起作用.
任何想法如何做到这一点?
编辑:
我试着从here开始尝试(尝试从here开始测试读卡器,就像在函数testTarballWithFolders()中一样),但每当我打电话时
TarballReader tarballReader = new TarballReader(fileName);
我得到NullPointerException:
java.lang.NullPointerException
at java.util.zip.InflaterInputStream.(InflaterInputStream.java:83)
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:77)
at java.util.zip.GZIPInputStream.(GZIPInputStream.java:91)
at utils.TarballReader.(TarballReader.java:61)
at main.SparkMain.lambda$0(SparkMain.java:105)
at main.SparkMain$$Lambda$18/1667100242.call(Unknown Source)
at org.apache.spark.api.java.JavaPairRDD$$anonfun$toScalaFunction$1.apply(JavaPairRDD.scala:1015)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
at scala.collection.AbstractIterator.to(Iterator.scala:1157)
at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
at org.apache.spark.rdd.RDD$$anonfun$collect$1$$anonfun$12.apply(RDD.scala:927)
at org.apache.spark.rdd.RDD$$anonfun$collect$1$$anonfun$12.apply(RDD.scala:927)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1858)
at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1858)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:89)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
MainSpark中的第105行是我在帖子的编辑中显示的那一行,而来自TarballReader的第61行是
GZIPInputStream gzip = new GZIPInputStream(in);
它为上面的输入流提供了一个空值:
InputStream in = this.getClass().getResourceAsStream(tarball);
我在正确的道路上吗?如果是这样,我该如何继续?为什么我得到这个空值,我该如何解决?
java 读取 tgz_java – 从Spark中的压缩中读取整个文本文件相关推荐
- java压缩文件读取_用Java读取/写入压缩和非压缩文件
java压缩文件读取 这篇文章的主要原因是尝试不要重复自己( DRY ),因为通常,我会遇到递归的需求,即读写压缩的和非压缩的文件(主要是JSON和CSV). 首先让我们看看如何读取文本文件. 注意我 ...
- HDFS和Spark配置LZO压缩,Spark读取LZO创建正常Task数量
1.说明 为了解决,数据日益增长并且目前使用Snappy压缩导致的Spark读取时会出现OOM,并且处理起来速度过慢的问题,决定使用LZO+Index来解决问题. 线上Hadoop版本3.2.1,Sp ...
- Java中zip压缩解压
1. 解压问题 360压缩文件 使用jdk API 读取压缩文件后解压,报错 java.lang.IllegalArgumentException:MALFORMED 如果是好压压缩文件,使用jdk ...
- 解决idea中maven项目无法读取src/main/java目录下面的配置文件问题
解决idea中maven项目无法读取src/main/java目录下面的配置文件问题 参考文章: (1)解决idea中maven项目无法读取src/main/java目录下面的配置文件问题 (2)ht ...
- 在 Java 中,如何批量读取本项目资源目录下的所有文件
在 Java 中,如何批量读取本项目资源目录下的所有文件 读取资源目录下的指定文件 方法 1:使用 JDK 中原始 API 方法 2:借助 Spring 附录 将 InputStream 转化为 by ...
- java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...
如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...
- java给xml加入值,怎么用java读取XML文件里的值并加入jsp页面中的下拉列表中
如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? 如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? java xml jsp 分享到: ------解决方案---- ...
- Java中使用字符流读取UTF-8和写出txt文件 乱码 问题
乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:
- Java读取、写入、处理Excel文件中的数据
在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有 ...
最新文章
- php 魔术变量和超级全局变量,PHP超级全局变量与魔术变量
- VMware Workstation 更改语言
- 【bzoj4698】[Sdoi2008] Sandy的卡片 后缀数组
- Smali文件添加try/catch语句,出现“invalid use of move-exception”异常
- codemirror mysql_CodeMirror 实现 JavaScript、 MySql 关键字的变色和自动实时提示 autocomplete...
- Vue的常用指令(v-html {{}}文本插值,v-bind绑定属性,v-if条件渲染,v-for列表渲染,v-on @ 事件绑定,v-model表单绑定)
- Spring Boot 1:Introduction
- Kubernetes的Device Plugin设计解读
- iOS网络开发(5)请求的缓存
- bcb6通过https接口post数据_3分钟短文 | 有挑战!PHP用1个函数实现post请求,你用哪个?
- ubuntu服务器无法运行chromedriver解决方法(转)
- 二叉树非递归遍历(先序、中序、后序)(C++)
- 阿里云部署网站全流程(基于nodejs)
- oracle数据库一个汉字占几个字节
- 01背包问题解法及优化
- LeetCode1456——定长子串中元音的最大数目
- 2021年全球与中国飞机导航镜行业市场规模现状及企业市场份额分析
- 数据库 基础 与命令 逻辑思维导图
- C语言有必要学的很深入细致吗?
- html flappybird小游戏代码,原生js实现Flappy Bird小游戏
热门文章
- java bio例子_传统的BIO
- Python 对字典循环遍历的两种方式
- 万网m3 windows linux切换,万网主机怎么做首页内页301重定向
- java word另存为_Java 网页html转为word并保存为doc文件
- An error occured instantiating job to be executed. job-Quartz的Job无法实例化原因及解决方案总结
- SpringBoot异步任务, 以及带返回值的异步任务(@Async 不起作用的原因)
- int与bigdecimal的相互转换
- vuecli3 配置多个代理
- 将本地项目上传到gitLab操作
- 使用git上传项目到github