1. 代码:
package spark.examples.fileformat import org.apache.spark.{SparkConf, SparkContext} object SequenceFileTest { def main(args: Array[String]) { val conf = new SparkConf() conf.setAppName("SequenceFileTest") conf.setMaster("local[3]") val sc = new SparkContext(conf) val data = List(("ABC", 1), ("BCD", 2), ("CDE", 3), ("DEF", 4), ("FGH", 5)) val rdd = sc.parallelize(data, 1) val dir = "file:///D:/sequenceFile-" + System.currentTimeMillis() rdd.saveAsSequenceFile(dir) val rdd2 = sc.sequenceFile[String, Int](dir + "/part-00000") println(rdd2.collect().map(elem => (elem._1 + ", " + elem._2)).toList) } }
2. SequenceFile的内容:
3.注意:
saveAsSequenceFile是SequenceFileRDDFunctions定义的方法,但是在上面的代码中并没有显式的指定隐式转换,原因是上面的代码运行于Spark1.3中,在SparkContext中有如下的注释解释了这种行为
// The following implicit functions were in SparkContext before 1.3 and users had to // `import SparkContext._` to enable them. Now we move them here to make the compiler find // them automatically. However, we still keep the old functions in SparkContext for backward // compatibility and forward to the following functions directly. implicit def intWritableConverter(): WritableConverter[Int] = simpleWritableConverter[Int, IntWritable](_.get) implicit def longWritableConverter(): WritableConverter[Long] = simpleWritableConverter[Long, LongWritable](_.get) implicit def doubleWritableConverter(): WritableConverter[Double] = simpleWritableConverter[Double, DoubleWritable](_.get) implicit def floatWritableConverter(): WritableConverter[Float] = simpleWritableConverter[Float, FloatWritable](_.get) implicit def booleanWritableConverter(): WritableConverter[Boolean] = simpleWritableConverter[Boolean, BooleanWritable](_.get) implicit def bytesWritableConverter(): WritableConverter[Array[Byte]] = { simpleWritableConverter[Array[Byte], BytesWritable] { bw => // getBytes method returns array which is longer then data to be returned Arrays.copyOfRange(bw.getBytes, 0, bw.getLength) } } implicit def stringWritableConverter(): WritableConverter[String] = simpleWritableConverter[String, Text](_.toString) implicit def writableWritableConverter[T <: Writable](): WritableConverter[T] = new WritableConverter[T](_.runtimeClass.asInstanceOf[Class[T]], _.asInstanceOf[T]) }
而SequenceFileRDDFunctions是针对KV都是继承自Writable的PairRDD
/** * Extra functions available on RDDs of (key, value) pairs to create a Hadoop SequenceFile, * through an implicit conversion. Note that this can't be part of PairRDDFunctions because * we need more implicit parameters to convert our keys and values to Writable. * */ class SequenceFileRDDFunctions[K <% Writable: ClassTag, V <% Writable : ClassTag]( self: RDD[(K, V)], _keyWritableClass: Class[_ <: Writable], _valueWritableClass: Class[_ <: Writable]) extends Logging with Serializable {
相关推荐
Sequence File有三种格式:未压缩、基于Record压缩和基于Block压缩。 - **未压缩格式**:每个记录包含记录长度、键长度、键和值,每隔一定数量的记录会有一个同步标记,用于随机访问。 - **基于Record压缩格式**...
本文将从三个方向考虑 Spark 生产优化:磁盘存储、CPU cores 和内存。 磁盘存储优化 在 Spark 生产环境中,磁盘存储是非常重要的,Spark 一般结合 HDFS 来做数据处理。HDFS 常用的压缩方式有 gzip、bzip2、lzo、lz...
5. **后续处理**:在HDFS上,可以进一步使用MapReduce或Spark等计算框架对Sequence File进行分析和处理。 通过这种方式,我们可以有效地应对小文件过多的问题,同时利用Redis的高速缓存能力优化数据流动,最后通过...
Focusing on a sequence of tutorials that deliver a working news intelligence service, you will learn about advanced Spark architectures, how to work with geographic data in Spark, and how to tune ...
《序列图绘制工具sequence-diagram-js的深度解析与应用》 序列图,作为一种重要的系统建模工具,广泛应用于软件设计和开发中,它清晰地展示了系统内各对象间交互的顺序。sequence-diagram-js是一个基于JavaScript的...
### Oracle数据库中的Sequence机制详解 #### 一、概述 在Oracle数据库中,`sequence`机制是一种自动生成唯一数值序列的方法,常用于为主键字段提供连续的整数值。它类似于其他数据库系统中的自动增长字段,但在...
2. 将RDD保存为Sequence文件:`rdd.saveAsSequenceFile("file:///opt/module/spark/seqFile")` 3. 读取Sequence文件:`val seq = sc.sequenceFile[Int, Int]("file:///opt/module/spark/seqFile")` 4. 打印读取的...
在AX中,Number Sequence由三个主要部分组成:Code、Prefix和Suffix。Code是序列的唯一标识符,用于内部引用;Prefix是在每个序列号码前附加的文本,比如"INV-";Suffix则是在号码后附加的文本,如默认的日期格式。 ...
《Sequence to Sequence Learning with Neural Networks》是一篇由Ilya Sutskever, Oriol Vinyals和Quoc V. Le共同撰写的论文,三位作者都来自Google公司。这篇论文在自然语言处理领域有着重要的影响,特别是在序列...
三、使用SequenceFlow设计流程 在 Activiti Studio 或其他 BPMN 编辑器中,我们可以拖拽并放置 SequenceFlow 来构建流程模型。以下是一些关键步骤: 1. 添加活动:首先,在画布上添加需要的活动,如用户任务(User ...
#### 三、Sequence重置方法 下面将详细介绍如何通过SQL脚本来重置Sequence,使其恢复正常功能。 ### SQL脚本实现 首先,我们定义了一个函数`func_getseq`,该函数接受一个表名作为参数,并返回该表主键的最大值。...
机器学习之sequence to sequence learning。(Sequence Generation-----Hung-yi Lee 李宏毅.ppt)
SequenceDiagram-3.0.5.zip 是一个包含 Sequence Diagram 相关工具或资源的压缩包文件,主要用于绘制序列图,这是UML(统一建模语言)中的一种图表,用于描述对象之间的交互和消息传递顺序。在软件开发过程中,序列...
### Sequence简单介绍 #### 序列(Sequence)概念解析及应用 序列(Sequence)是一种用于生成一系列数值的数据对象,常用于数据库系统中为主键提供自动递增的功能。本篇文章主要聚焦于Oracle数据库与SQL Server...
**序号图(Sequence Diagram)**是统一建模语言(UML)中的一种图形表示,用于描述系统中对象之间的交互顺序。它清晰地展现了不同对象如何通过消息传递进行通信,以及这些消息的时间顺序。在软件设计和分析阶段,...
#### 三、Sequence的使用 - **获取下一个序列值**:使用`.nextval`来获取下一个序列值。 - **获取当前序列值**:使用`.curval`来获取当前序列值。 ##### 示例: 获取`SEQ_TEST`序列的下一个值。 ```sql SELECT ...
Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...
Oracle中的Sequence是数据库管理系统提供的一种机制,用于生成序列化的整数,通常用于主键或唯一标识符,确保数据的唯一性和有序性。在Oracle中,Sequence不同于其他数据库系统的自增字段,例如SQL Server中的`...
Informatica 中 Sequence Generator 的两个有用的选项 Informatica 是一个功能强大且常用的数据集成工具,在数据集成过程中,Sequence Generator 是一个非常重要的组件,用于生成唯一的序列号,作为表的主键或其他...