spark之DataFrame 通过反射创建
来源:互联网 发布:php招聘网站源码 编辑:程序博客网 时间:2024/04/29 08:11
下面给大家介绍通过javaBeas反射创建DataFrame。
一,准备数据文件:
二,过程分析:
1,根据数据文件创建对应的javaBean,设置对应的set和get方法。 2,读取text文件通过map函数将文件内容分割,设置到person并返回。 3,通过返回的RDD和javaBean反射创建DataFrame。并设置表名。 4,条件查旬从该表中筛选想要的信息。返回的也是一个DataFrame. 5,再次通过map算子将teenagers转化为RDD将结果输出注意在DataFrame转RDD时的map泛型的第一个参数是row,对应表的一行数据。通过getString指定位置取对应的参数。
三,代码展示:
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.Function;import org.apache.spark.sql.DataFrame;import org.apache.spark.sql.Row;import org.apache.spark.sql.SQLContext;public class SparkrefleCttest2 { public static void main(String[] args) { SparkConf conf=new SparkConf(); conf.set("spark.testing.memory", "269522560000"); JavaSparkContext sc=new JavaSparkContext("local","SparkrefleCttest2",conf); System.out.println("与spark的连接建立成功"+conf); SQLContext sqlContext=new org.apache.spark.sql.SQLContext(sc); System.out.println("sqlContext建立成功" + sqlContext); //读取text文件通过map函数将文件内容分割,设置到person并返回 JavaRDD<Person> people=sc.textFile("hdfs://192.168.61.128:9000/spark001/sparkreflect.txt").map(new Function<String,Person>(){ public Person call(String line) throws Exception { String[] ss=line.split(","); Person person=new Person(); person.setName(ss[0]); person.setAge(Integer.parseInt(ss[1])); return person; }}); //通过javaBeans 即person创建DataFrame DataFrame schemaPeople=sqlContext.createDataFrame(people, Person.class); schemaPeople.registerTempTable("people");//创建表名 //从创建好的表中条件查旬信息 DataFrame teenagers=sqlContext.sql("select name from people where age>13 and age<22"); //再次通过map算子将teenagers转化为RDD将结果输出 //注意在DataFrame转RDD时的map泛型的第一个参数是row,对应表的一行数据 List<String> teenagerNames =teenagers.javaRDD().map(new Function<Row,String>(){ public String call(Row row) throws Exception { String name=row.getString(0); return "Name: "+name; }}).collect(); for(String name:teenagerNames){ System.out.println("符合条件的人:"+name); } } public static class Person implements Serializable{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }}
0 0
- spark之DataFrame 通过反射创建
- Spark之DataFrame通过编码创建
- [2.2]Spark DataFrame操作(二)之通过反射实现RDD与DataFrame的转换
- Spark SQL 之 DataFrame
- Spark之 DataFrame
- Spark之DataFrame 练习
- [2.3]Spark DataFrame操作(二)之通过编程动态完成RDD与DataFrame的转换
- Spark DataFrame创建与操作
- Spark dataframe创建&操作总结
- spark dataframe创建和操作
- Spark 之 dataframe 之 join
- SparkSQL之创建DataFrame
- pandas之DataFrame创建
- Apache Spark DataFrames入门指南:创建DataFrame
- Apache Spark DataFrames入门指南:创建DataFrame
- Spark创建DataFrame和读取CSV数据文件
- Spark创建DataFrame和读取CSV数据文件
- Spark-Sql之DataFrame实战详解
- hiho第七周--完全背包
- 2016"百度之星" - 复赛(Astar Round3)1003 1004
- 建筑物转手绘稿(也适用于其他图片)
- 从头学android_IP拨号器
- sort() 排序函数 入门学习
- spark之DataFrame 通过反射创建
- Ubuntu下安装JDK和Eclipse遇到的问题记录
- Shell 替换+运算符
- ESP8266-SDK的最小系统的接线图
- TCP/IP入门(3) --传输层
- 内部类与匿名内部类的概念与使用————Java基础知识
- Ubuntu16.04切换工作区的问题
- Lucene总结
- 浅谈MySQL对指定字段进行加密