主要内容:

1. List转JavaRDD,打印JavaRDD

2. List转JavaRDD,JavaRDD转JavaPairRDD,打印JavaPairRDD

3. JavaRDD<String> 转 JavaRDD<Row>


1. 先将List转为JavaRDD,再通过collect()和foreach打印JavaRDD

/**
* @author Yu Wanlong
*/ import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext; public class ReadTextToRDD { public static void main(String[] args) {
// configure spark
SparkConf sparkConf = new SparkConf().setAppName("Read Text to RDD")
.setMaster("local[2]").set("spark.executor.memory","2g");
// start a spark context
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
// build List<String>
List<String> list = Arrays.asList("a:1", "a:2", "b:1", "b:1", "c:1","d:1");
// List<String> to JavaRDD<String>
JavaRDD<String> javaRDD = jsc.parallelize(list); // 使用collect打印JavaRDD
for (String str : javaRDD.collect()) {
System.out.println(str);
}
// 使用foreach打印JavaRDD
javaRDD.foreach(new VoidFunction<String>() {
@Override
public void call(String s) throws Exception {
System.out.println(s);
}
});
}
} a:1
a:2
b:1
b:1
c:1
d:1

2.  List转JavaRDD,JavaRDD转JavaPairRDD,打印JavaPairRDD

/**
* @author Yu Wanlong
*/ import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext; public class ReadTextToRDD { public static void main(String[] args) {
// configure spark
SparkConf sparkConf = new SparkConf().setAppName("Read Text to RDD")
.setMaster("local[2]").set("spark.executor.memory","2g");
// start a spark context
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
// build List<String>
List<String> list = Arrays.asList("a:1", "a:2", "b:1", "b:1", "c:1","d:1");
// List<String> to JavaRDD<String>
JavaRDD<String> javaRDD = jsc.parallelize(list);
// JavaRDD<String> to JavaPairRDD
JavaPairRDD<String, Integer> javaPairRDD = javaRDD.mapToPair(
new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String s) throws Exception {
String[] ss = s.split(":");
return new Tuple2<String, Integer>(ss[0], Integer.parseInt(ss[1]));
}
});
// 使用collect对JavaPairRDD打印
for (Tuple2<String, Integer> str : javaPairRDD.collect()) {
System.out.println(str.toString());
}
}
} (a,1)
(a,2)
(b,1)
(b,1)
(c,1)
(d,1)

 在JavaRDD<String>转为JavaPairRDD<String,Integer>的过程中,关键点为:

第一:mapToPair函数中的PairFunction<String, String, Integer>():PairFunction<JavaRDD输入的类型, 返回的JavaPairRDD的key类型, 返回的JavaPairRDD的value类型>()

第二:由于JavaPairRDD的存储形式本是key-value形式,Tuple2<String, Integer> 为需要返回的键值对类型,Tuple2<Key的类型, value类型>

第三:String s,String类型为JavaRDD<String>中的String,s代表其值

第四:return new Tuple2<String, Integer>(ss[0], Integer.parseInt(ss[1])),此处为返回的key-value的返回结果

小结:JavaRDD在转换成JavaPairRDD的时候,实际上是对单行的数据整合成key-value形式的过程,由JavaPairRDD在进行key-value运算时效率能大大提升

3.  JavaRDD<String> 转 JavaRDD<Row>

/**
* @author Yu Wanlong
*/ import org.apache.spark.sql.Row;
import org.apache.spark.SparkConf;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext; public class ReadTextToRDD { public static void main(String[] args) {
// configure spark
SparkConf sparkConf = new SparkConf().setAppName("Read Text to RDD")
.setMaster("local[2]").set("spark.executor.memory","2g");
// start a spark context
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
// build List<String>
List<String> list = Arrays.asList("a:1", "a:2", "b:1", "b:1", "c:1","d:1");
// List<String> to JavaRDD<String>
JavaRDD<String> javaRDD = jsc.parallelize(list); // JavaRDD<String> to JavaRDD<Row>
JavaRDD<Row> javaRDDRow = javaRDD.map(new Function<String, Row>() {
@Override
public Row call(String s) throws Exception {
String[] ss = s.split(":");
return RowFactory.create(ss[0], ss[1]);
}
}); // 打印JavaRDD<Row>
for (Row str : javaRDDRow.collect()) {
System.out.println(str.toString());
}
}
} [a,1]
[a,2]
[b,1]
[b,1]
[c,1]
[d,1]

Spark JavaRDD、JavaPairRDD、Dataset相互转换与打印的更多相关文章

  1. Spark JavaRDD、JavaPairRDD、Dataset之间的相互转换

    主要内容: 1. JavaRDD to JavaPairRDD 2. Dataset to JavaPairRDD 3. JavaPairRDD to JavaRDD 4. JavaRDD to Da ...

  2. XML与DataSet相互转换,DataSet查询

    以FileShare.Read形式读XML文件: string hotspotXmlStr = string.Empty; try { Stream fileStream = new FileStre ...

  3. Python 实现列表与二叉树相互转换并打印二叉树封装类-详细注释+完美对齐

    # Python 实现列表与二叉树相互转换并打印二叉树封装类-详细注释+完美对齐 from binarytree import build import random # https://www.cn ...

  4. Python 实现列表与二叉树相互转换并打印二叉树16-详细注释+完美对齐-OK

    # Python 实现列表与二叉树相互转换并打印二叉树16-详细注释+完美对齐-OK from binarytree import build import random # https://www. ...

  5. spark rdd df dataset

    RDD.DataFrame.DataSet的区别和联系 共性: 1)都是spark中得弹性分布式数据集,轻量级 2)都是惰性机制,延迟计算 3)根据内存情况,自动缓存,加快计算速度 4)都有parti ...

  6. C#中Json和List/DataSet相互转换

    #region List<T> 转 Json        /// <summary>        /// List<T> 转 Json        /// & ...

  7. Spark Streaming之dataset实例

    Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理. bin/spark-submit --class Streaming /home/wx/ ...

  8. 泛型集合与DataSet相互转换

    一.泛型转DataSet /// <summary> /// 泛型集合转换DataSet /// </summary> /// <typeparam name=" ...

  9. Spark Dataset DataFrame 操作

    Spark Dataset DataFrame 操作 相关博文参考 sparksql中dataframe的用法 一.Spark2 Dataset DataFrame空值null,NaN判断和处理 1. ...

随机推荐

  1. GetHashCode()

    [GetHashCode] GetHashCode 方法的默认实现不保证针对不同的对象返回唯一值.而且,.NET Framework 不保证 GetHashCode 方法的默认实现以及它所返回的值在不 ...

  2. Python_11-正则表达式

    目录: 1.1      引言 1.2      python 正则式概述及常用字符 1.2.1       元字符 1.2.2       用 "" 开始的特殊字符所表示的预定义 ...

  3. java实现将文件压缩成zip格式

    以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...

  4. RPM简介与基本使用

    一.什么是RPM RPM的全名是Red Hat Package Manager,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Man ...

  5. Qt Setting Application Icon

    Qt4 设置应用程序图标 将一个ico图标放在资源文件夹下; 然后建立txt,输入 IDI_ICON1 DISCARABLE "myico.ico"; 保存文件,将其后缀改为.rc ...

  6. 使用Qt Installer Framework制作软件安装包

    概述 Qt Installer Framework(缩写QIF)是Qt官方用于生成软件安装包的工具.包括Qt Creator和Qt Installer Framework自身的安装包都是由这个工具制作 ...

  7. Linux cloc

    一.简介 cloc是一个基于perl的.十分好用的代码统计工具,它所支持的语言还算十分丰富.不过,还是有很多用的较少的语言是不支持的.   二.安装配置 1)官网安装教程 http://cloc.so ...

  8. SecureCRT 下MySQL中文乱码问题终极解决方案-乾颐堂

    一.查看Linux主机系统字符集 命令: echo $LANG [root@pythontab.com ~]# echo $LANG [root@pythontab.com ~]# en_US.UTF ...

  9. 【转载】java实现rabbitmq消息的发送接受

    原文地址:http://blog.csdn.net/sdyy321/article/details/9241445 本文不介绍amqp和rabbitmq相关知识,请自行网上查阅 本文是基于spring ...

  10. makeword()

    MAKEWORD(学习之用,转载) MAKEWORD 宏 平台:SDK 这个宏创建一个被指定变量连接而成的WORD变量.返回一个WORD变量. (注:typedef unsigned short WO ...