本文共 1234 字,大约阅读时间需要 4 分钟。
用于处理构造化数据的spark模块
可以通过DataFrame和DataSet处理数据
SQL优缺点
优点:表达非常清晰,难度低,易学习
缺点: 负责的业务需要复杂的SQL,复杂的分析,SQL嵌套较多。机器学习较难实习
Hive 是将sql转化成MapReduce进行计算
SparkSQL是将SQL转换RDD集进行计算
弹性分布式数据集
DataFrame是以RDD为基础的带有Schema元信息的分布式数据集(DataFrame=Schema+RDD*N)
含有类型信息的DataFrame就是DataSet (DataSet =DataFrame+类型=schema+RDD*N+类型)
DataSet包含了DataFrame的功能
1.在本地创建一个文件,有id、name、age三列,用空格分隔,然后上传到hdfs上
vim /opt/person.txt
1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40
//Spark session available as 'spark'.// 1.读取数据安装空格进行切分var lineRDD=sc.textFile("file:///opt/person.txt").map(_.split(" "))// 2.定义class样例类对象 用来接收文件数据case class Person(id:Int, name:String, age:Int)// 3.将读取出的RDD 关联到Person中val personRDD = lineRDD.map(x => Person(x(0).toInt, x(1), x(2).toInt)) // 4.将带有对象的RDDh转换成DataFrameval personDF = personRDD.toDF// 5.读取数据和schema元数据信息personDF.show// 6.展示出元数据信息(查看表结构)personDF.printSchema// 7.将personDF 转换为转换为临时表personDF.createOrReplaceTempView("t_person")// 8.编写SQL语句查询数据(可以根据自己的需求来写)spark.sql("select name from t_person").show
转载地址:http://uokzi.baihongyu.com/