主要内容:

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. SQL 数据库 学习 005 学习必备的一些操作 --- 如何新建数据库 如何附加和分离数据库(如何备份还原数据库) 如何删除数据库

    我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识.比如:如何新建一个数据库 ...

  2. 解决T4模板的程序集引用的五种方案

    在众多.NET应用下的代码生成方案中,比如CodeDOM,BuildProvider, 我觉得T4是最好的一种.关于T4的基本概念和模板结果,可以参考我的文章<基于T4的代码生成方式>.如 ...

  3. ICO流程,casestudy

    https://medium.com/crypto-oracle/ico-analysis-framework-nex-case-study-bf65586b4b32

  4. [C++] Variable/Hex conversion

    程序编译链接原理预处理:.c -> .i gcc -E hello.c -o hello.i 编译:.i / .c -> .sgcc -S hello.i -o hello.s 汇编:.s ...

  5. Hive入门学习随笔(二)

    ====使用Load语句执行数据的导入 --将操作系统上的文件student01.txt数据导入到t2表中 load data local inpath '/root/data/student01.t ...

  6. Sublime Text 2 安装配置插件

    最近学习python,看网上推荐用sublime text2挺方便,就学习了一下对sublime text2 安装插件,先放在这里,以备以后查找 根据晚上资料修改,原文请看这里 Python的自动补全 ...

  7. CRISPR/Cas9基因敲除原理及实验建议

    CRISPR/Cas9基因敲除原理及实验建议   CRISPR Cas9已经成为了最受欢迎的基因编辑技术之一,在2016年的国自然基金中也有很多项目是关于 CRISPR Cas9的.目前在市场上已经有 ...

  8. ServiceStack.Redis.RedisNativeClient的方法“get_Db”没有实现。

    项目中用到redis,用nuget导入,但是运行时遇到问题 Exception: “Com.JinYiWei.Cache.RedisHelper”的类型初始值设定项引发异常.System.TypeIn ...

  9. QML的默认属性default property

    qml中,普通的属性,需要添加属性名称,属性内容,如 color: “red” 默认属性则可以直接书写,去掉方括号,在写重用的QML组件式比较有用,例如将一个QmL外部资源封装好,内部具体的item, ...

  10. RF和GBDT的区别

    Random Forest ​采用bagging思想,即利用bootstrap抽样,得到若干个数据集,每个数据集都训练一颗树. 构建决策树时,每次分类节点时,并不是考虑全部特征,而是从特征候选集中选取 ...