java

 public class ReflectionDemo {
private static SparkConf conf = new SparkConf().setAppName("reflectdemo").setMaster("local");
private static JavaSparkContext jsc = new JavaSparkContext(conf); private static SparkSession session = new SparkSession(jsc.sc()); public static void main(String[] args) throws AnalysisException { // rdd
JavaRDD<String> rdd = jsc.textFile("./src/main/java/cn/tele/spark_sql/rdd2dataset/students.txt"); // 封装rdd
JavaRDD<Student> mapRdd = rdd.map(new Function<String, Student>() { private static final long serialVersionUID = 1L; @Override
public Student call(String v1) throws Exception {
String[] fields = v1.split(",");
Student student = new Student(Integer.valueOf(fields[0]), fields[1], Integer.valueOf(fields[2]));
return student;
}
}); // 通过反射的方式进行转换
Dataset<Row> dataset = session.createDataFrame(mapRdd, Student.class); // 注册为临时信息表
// dataset.registerTempTable("students"); dataset.createOrReplaceTempView("studentsView"); Dataset<Row> result = session.sql("select * from studentsView where age<=18");
// result.show(); // 把dataset转换成rdd
JavaRDD<Student> javaRDD = result.javaRDD().map(new Function<Row, Student>() { private static final long serialVersionUID = 1L; @Override
public Student call(Row v1) throws Exception {
return new Student(v1.getAs("id"), v1.getAs("name"), v1.getAs("age"));
}
}); javaRDD.foreach(new VoidFunction<Student>() { private static final long serialVersionUID = 1L; @Override
public void call(Student t) throws Exception {
System.out.println(t);
}
});
session.stop();
jsc.close();
}
}

scala

 case class Student(val id:Int,val name:String,val age:Int)

 object ReflectionDemo {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("reflectdemo").setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) //导入隐式转换
import sqlContext.implicits._ //创建rdd
val rdd = sc.textFile("./src/main/scala/cn/tele/spark_sql/rdd2dataframe/students.txt", 2) //转换rdd为dataframe
val dataframe = rdd.map(line => {
val arr = line.split(",");
new Student(arr(0).trim().toInt, arr(1).trim(), arr(2).trim().toInt)
}).toDF() //创临时视图
dataframe.createOrReplaceTempView("students") // dataframe.show() val df = sqlContext.sql("select * from students where age<=18") val newRdd = df.rdd.map(row => new Student(row.getAs[Int]("id"), row.getAs[String]("name"), row.getAs[Int]("age"))) newRdd.foreach(println(_))
} }

sparksql 用反射的方式将rdd转换成dataset/dataframe的更多相关文章

  1. sparksql 动态设置schema将rdd转换成dataset/dataframe

    java public class DynamicDemo { private static SparkConf conf = new SparkConf().setAppName("dyn ...

  2. Spark之 RDD转换成DataFrame的Scala实现

    依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2. ...

  3. RDD转换成DataFrames

    官方提供了2种方法 1.利用反射来推断包含特定类型对象的RDD的schema.这种方法会简化代码并且在你已经知道schema的时候非常适用. 先创建一个bean类 case class Person( ...

  4. 利用反射将Datatable、SqlDataReader转换成List模型

    1. DataTable转IList public class DataTableToList<T>whereT :new() { ///<summary> ///利用反射将D ...

  5. 利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model

    利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model   使用场景:网站配置项目,为了便于管理,网站有几个Model类来管理配置文件, 比如ConfigWebsiteMo ...

  6. [C#]Winform后台提交数据且获取远程接口返回的XML数据,转换成DataSet

    #region 接口返回的Xml转换成DataSet /// <summary> /// 返回的Xml转换成DataSet /// </summary> /// <par ...

  7. TXT文件转换成DataSet数据集

    /// <summary> /// TXT文件转换成DataSet数据集 /// </summary> /// <param name="FilePath&qu ...

  8. c#将List&lt;T&gt;转换成DataSet

    /// <summary>         /// List<T> 转换成DataSet         /// </summary>         /// &l ...

  9. Spark中RDD转换成DataFrame的两种方式(分别用Java和Scala实现)

    一:准备数据源     在项目下新建一个student.txt文件,里面的内容为: ,zhangsan, ,lisi, ,wanger, ,fangliu, 二:实现 Java版: 1.首先新建一个s ...

随机推荐

  1. Android车载导航的一些困境

    车载导航从最初的用解码芯片,过渡到用WinCE系统,已经形成了一个较大的产业.车载导航使用上的一些大原则,基本上被固定了下来.如今WinCE走到了尽头,Android车载导航開始发力,但由于Andro ...

  2. [寒江孤叶丶的Cocos2d-x之旅_36]用LUA实现UTF8的字符串基本操作 UTF8字符串长度,UTF8字符串剪裁等

    原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 一个用于UTF8字符串操作的类.功能比較 ...

  3. Day1:用户交互与格式化输出

    一.用户交互 1.input()方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan username = inpu ...

  4. [Javascript] Safer property access with Lodash's 'get' method

    Property access in Javascript can be problematic - especially when dealing with nested Objects and A ...

  5. HDU 1800 Flying to the Mars Trie或者hash

    http://acm.hdu.edu.cn/showproblem.php?pid=1800 题目大意: 又是废话连篇 给你一些由数字组成的字符串,判断去掉前导0后那个字符串出现频率最高. 一开始敲h ...

  6. 一起学libcef--给你的浏览器删除cookie

    long long ago, 我们讨论了如给你cef设置cookie. 如今来补充一点,假设给你的浏览器删除某一cookie. review一下设置cookie: std::wstring usern ...

  7. SpringMvc中两个Controller类之间传递参数的方法

    使用SpringMvc框架,在访问ControllerA的时候,将A里面的参数传递到ControllerB中.适用于同一框架下两个不同Controller或者由rpc(dubbo)连接的两个工程里的C ...

  8. asm 的hello world 2011.04.28

    这几天一直在弄一个嵌入式的程序,搭环境,熟悉库函数,熟悉汇编,乱成一锅粥,到现在还是没有什么系统性的收获. 或许下周弄出来吧,(一定得弄出来,不然老大该跟我急了……). 今天,熟悉汇编,好歹用汇编写出 ...

  9. .NET Framework基础知识(五)(转载)

    .程序集:是 .NET Framework 应用程序的构造块:程序集构成了部署.版本控制.重复使用.激活范围控制和 安全权限的基本单元. .程序集的优点:版本控制问题.最终解决DLL冲突 .程序集分为 ...

  10. [Grid Layout] Use auto-fill and auto-fit if the number of repeated grid tracks is not to be def

    What about the situation in which we aren’t specifying the number of columns or rows to be repeated? ...