sparksql 动态设置schema将rdd转换成dataset/dataframe
java
public class DynamicDemo {
private static SparkConf conf = new SparkConf().setAppName("dynamicdemo").setMaster("local");
private static JavaSparkContext jsc = new JavaSparkContext(conf);
private static SparkSession session = new SparkSession(jsc.sc());
public static void main(String[] args) {
// 创建rdd
JavaRDD<String> rdd = jsc.textFile("./src/main/java/cn/tele/spark_sql/rdd2dataset/students.txt");
// 创建Row的rdd
JavaRDD<Row> rowRdd = rdd.map(new Function<String, Row>() {
private static final long serialVersionUID = 1L;
@Override
public Row call(String v1) throws Exception {
String[] fields = v1.split(",");
return RowFactory.create(Integer.valueOf(fields[0]), fields[1], Integer.valueOf(fields[2]));
}
});
// 创建schema
StructType schema = DataTypes
.createStructType(Arrays.asList(DataTypes.createStructField("id", DataTypes.IntegerType, false),
DataTypes.createStructField("name", DataTypes.StringType, false),
DataTypes.createStructField("age", DataTypes.IntegerType, false)));
// 转换
Dataset<Row> dataset = session.createDataFrame(rowRdd, schema);
dataset.createOrReplaceTempView("students");
Dataset<Row> result = session.sql("select * from students where age<=18");
result.show();
session.stop();
jsc.close();
}
}
scala
object DynamicDemo {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("reflectdemo").setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
//创建rdd
val rdd = sc.textFile("./src/main/scala/cn/tele/spark_sql/rdd2dataframe/students.txt", 8)
val rowRdd = rdd.map(lines => {
val arr = lines.split(",");
Row(arr(0).trim().toInt, arr(1), arr(2).trim().toInt)
})
val schema = DataTypes.createStructType(Array(
/* DataTypes.createStructField("id",DataTypes.IntegerType,false),
DataTypes.createStructField("name",DataTypes.StringType,false),
DataTypes.createStructField("age",DataTypes.IntegerType,false)*/
StructField("id", DataTypes.IntegerType, false),
StructField("name", DataTypes.StringType, false),
StructField("age", DataTypes.IntegerType, false)))
//转换
val dataframe = sqlContext.createDataFrame(rowRdd, schema)
dataframe.createOrReplaceTempView("students")
val result = sqlContext.sql("select * from students where age<=18")
result.show()
}
}
sparksql 动态设置schema将rdd转换成dataset/dataframe的更多相关文章
- sparksql 用反射的方式将rdd转换成dataset/dataframe
java public class ReflectionDemo { private static SparkConf conf = new SparkConf().setAppName(" ...
- Spark之 RDD转换成DataFrame的Scala实现
依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2. ...
- RDD转换成DataFrames
官方提供了2种方法 1.利用反射来推断包含特定类型对象的RDD的schema.这种方法会简化代码并且在你已经知道schema的时候非常适用. 先创建一个bean类 case class Person( ...
- [C#]Winform后台提交数据且获取远程接口返回的XML数据,转换成DataSet
#region 接口返回的Xml转换成DataSet /// <summary> /// 返回的Xml转换成DataSet /// </summary> /// <par ...
- TXT文件转换成DataSet数据集
/// <summary> /// TXT文件转换成DataSet数据集 /// </summary> /// <param name="FilePath&qu ...
- c#将List<T>转换成DataSet
/// <summary> /// List<T> 转换成DataSet /// </summary> /// &l ...
- Spark中RDD转换成DataFrame的两种方式(分别用Java和Scala实现)
一:准备数据源 在项目下新建一个student.txt文件,里面的内容为: ,zhangsan, ,lisi, ,wanger, ,fangliu, 二:实现 Java版: 1.首先新建一个s ...
- vs 设置自动缩进tab转换成空格
工具 选项 文本编辑器 如下图 选中插入空格 使用技巧: 按Ctrl+K+F组合键,可以自动进行代码对齐.
- C# 将XML转换成DataSet【转】
XmlDocument xml = new XmlDocument();xml.LoadXml(str); //str:具有xml格式的字符串 XmlNodeReader reader = new X ...
随机推荐
- 14. Spring Boot MyBatis 连接数据库
转自:https://blog.csdn.net/catoop/article/details/50553714
- arduino串口输出问题
- jmeter与apache测试网站并发
本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求.最后还用linux下的压测工具ab做了简单对比. 1. ...
- MySql开发之函数
1,在mySql常见的文本函数中常见的文本函数例如以下表所看到的: 2,数字函数例如以下: 3,日期和时间函数: 4,格式化日期和时间 使用的函数例如以下DATE_FORMAT()和TIME_FORM ...
- php课程 10-34 目录遍历中的注意事项是什么
php课程 10-34 目录遍历中的注意事项是什么 一.总结 一句话总结:用scandir,会把目录和文件放到一个数组中. 1.移动文件怎么实现,php里面没有移动文件这个函数? 先复制,再删除 2 ...
- php中嵌套html代码和html代码中嵌套php方式
php中嵌套html代码和html代码中嵌套php方式 一.总结 拷贝的话直接html代码是极好的方式 1.php中嵌套html代码(本质是原生php):a.原生嵌套<?php .....?&g ...
- LA 3887 - Slim Span 枚举+MST
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- 【z05】聪明的质检员
[题目链接]:http://noi.qz5z.com/viewtask.asp?id=z05 [题解] 显然w越大,最后的Y也就越大; 可以依靠这个搞二分: 如果二分枚举的tw得到的Y比S小,则减小t ...
- Visual Studio中你所不知道的智能感知
在Visual Studio中的智能感知,相信大家都用过.summary,param,returns这几个相信很多人都用过的吧.那么field,value等等这些呢. 首先在Visual Studio ...
- POJ 1775 Sum of Factorials (ZOJ 2358)
http://poj.org/problem?id=1775 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1334 题目大意: ...