最近接到一个需求,需要对spark的结果分目录输出,百度之后找到了解决方案,大多都是spark 按照key分目录输出,

但是在文件当中,会把key也输出出来,在这里以key作为目录是想建hive表时把 01,02当做分区的,结果文件中不需要保存key值。其实在mr中也有类似需求,我的输出只要key-value对中的value,不要key,在mr中是怎么解决的呢,将输出设置为NullWritable,spark里也是这样的,上代码
多目录输出,首先要创建一个继承MultipleTextOutputFormat的新类,重写其generateFileNameForKeyValue 方法,方法的返回值就是动态生成的目录的名称,这里的返回值是用value计算的,
class RDDMultipleTextOutputFormat[K, V]() extends MultipleTextOutputFormat[K, V]() {
//private val output:TextOutputFormat[String, String] = null
override def generateFileNameForKeyValue(key: K, value: V, name: String) : String = {
val dt = Utils.getDt(value.toString.split("\t",-1)(2))
s"$dt/$name"
} }
定义好RDDMultipleTextOutputFormat后,就可以保存rdd结果了
lines.saveAsHadoopFile(
outPath,
classOf[NullWritable], //这里定义的是NullWritable,那么pairRdd 就应该是RDD[NullWritable,String]类型的
classOf[String],
classOf[RDDMultipleTextOutputFormat[_, _]],classOf[GzipCodec])

  

这样输出结果就会按照自己的要求分目录输出了,classOf[GzipCodec] 指定输出结果的压缩方式

spark中的多目录输出及压缩的更多相关文章

  1. 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息。

    1 import java.text.SimpleDateFormat; 2 import org.apache.hadoop.fs.*; 3 4 public class E_RecursiveRe ...

  2. spark map函数中使用println无法输出

    问题 // 每个点为hardData中的一个Array val hardData = spark.read.textFile(args(0)).rdd .map(_.split(" &quo ...

  3. Spark中的编程模型

    1. Spark中的基本概念 Application:基于Spark的用户程序,包含了一个driver program和集群中多个executor. Driver Program:运行Applicat ...

  4. 在 Spark 中使用 IPython Notebook

    本文是从 IPython Notebook 转化而来,效果没有本来那么好. 主要为体验 IPython Notebook.至于题目,改成<在 IPython Notebook 中使用 Spark ...

  5. Spark中常用工具类Utils的简明介绍

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  6. 鸟哥的linux私房菜 - 第5/6/7/9章(在线求助 man page、Linux档案权限与目录配置、Linux档案与目录管理、压缩与打包)

    第五章.在线求助 man page X window与文本模式的切换 Ctrl+Alt+F1~F6:文字接口登入tty1~tty6终端机: Ctrl+Alt+F7:图形接口桌面. 注销当前用户:exi ...

  7. Tachyon在Spark中的作用(Tachyon: Reliable, Memory Speed Storage for Cluster Computing Frameworks 论文阅读翻译)

    摘要:         Tachyon是一种分布式文件系统,能够借助集群计算框架使得数据以内存的速度进行共享.当今的缓存技术优化了read过程,可是,write过程由于须要容错机制,就须要通过网络或者 ...

  8. ASP.NET MVC 4 (十一) Bundles和显示模式--asp.net mvc中 @Scripts.Render("~/bundles/jquery")是什么意思? 在布局文件中使用Scripts.Render()输出脚本包,Styles.Render()输出风格包:

    ASP.NET MVC 4 (十一) Bundles和显示模式 ASP.NET MVC 4 引入的js打包压缩功能.打包压缩jquery目录下的文件,在布局文件中使用Scripts.Render()输 ...

  9. JAVA 实现将多目录多层级文件打成ZIP包后保留层级目录下载 ZIP压缩 下载

    将文件夹保留目录打包为 ZIP 压缩包并下载 上周做了一个需求,要求将数据库保存的 html 界面取出后将服务器下的css和js文件一起打包压缩为ZIP文件,返回给前台:在数据库中保存的是html标签 ...

随机推荐

  1. 2019 中细软java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.中细软等公司offer,岗位是Java后端开发,因为发展原因最终选择去了中细软,入职一年时间了,也成为了面试官 ...

  2. tcp / udp 协议及其实现的socket

    一.tcp协议 1.1 基本知识 特点: 可靠,慢,全双工通信 建立连接时:三次握手 断开连接时:四次挥手 在建立起连接之后 发送的每一条信息都有回执 为了保证数据的完整性,还有重传机制 长连接:会一 ...

  3. 25. Apache Shiro Java反序列化漏洞

    前言: 最近在审核漏洞的时候,发现尽管Apache shiro这个反序列化漏洞爆出来好久了,但是由于漏洞特征不明显,并且shiro这个组件之前很少听说,导致大厂很多服务还存在shiro反序列化的漏洞, ...

  4. proxychains4配置使用

    一丶安装 sudo apt-get install proxychains4 二丶修改配置文件 sudo vim /etc/proxychains.conf 在文本最后加上你的代理服务器地址,如果有用 ...

  5. List转换数组 数组转换List

    数组转List package listtoArray; import java.util.ArrayList;import java.util.Arrays;import java.util.Col ...

  6. Shell 编程 排序工具 sort 和 uniq

    本篇主要写一些shell脚本排序工具的使用. sort 概述 sort是一个以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序. 用法 sort [选项] 参数 -f:忽略大小写 -b ...

  7. elasticsearch 索引和mapping导入导出命令

    导mapping:elasticdump \ --input=http://192.168.102.13:9200/search_v1 \ --output=http://192.168.102.69 ...

  8. flask实战-个人博客-电子邮件支持

    电子邮件支持 因为博客要支持评论,所以我们需要在文章有了新评论后发邮件通知管理员.而且,当管理员回复了读者的评论后,也需要发送邮件提醒读者. 为了方便读者使用示例程序,personalBlog中仍然使 ...

  9. mysql5.6采集数据插入出现MySQL server has gone away解决办法

    当做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到My ...

  10. LOJ#107. 维护全序集(FHQ Treap)

    题面 传送门 题解 板子,没啥好说的 //minamoto #include<bits/stdc++.h> #define R register #define inline __inli ...