sparksql是spark中的一个模块,主要用于进行结构化数据的处理,他提供的最核心的编程抽象,就是DataFrame。同时,sparksql还可以作为分布式的sql查询引擎。 最最重要的功能就是从hive中查询数据。
    Dataframe可以理解为:以列的形式组织的,分布式的数据集合。
    Dataframe可以通过很多来源进行构建,包括:结构化的数据文件、hive中的表、外部的关系型数据库、以及RDD
 
使用sparksql 首先需要创建一个sqlContext对象,或者是它的子类的对象(hiveContext的对象)
 
Java版本
package cn.spark.study.sql;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SQLContext; /**
* 创建dataframe
*/
public class DataFrameCreate {
public static void main (String[] args){
SparkConf conf = new SparkConf()
.setAppName("DataFrameCreate")
.setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc);
sqlContext.read().json("hdfs://spark1:9000/test.json").show();
}
} //=======================分隔符====================================== package cn.spark.study.sql; import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SQLContext;
/**
* dataframe常用操作
*/
public class DataFrameOperation {
public static void main(String [] args){
// 创建DataFrame
SparkConf conf = new SparkConf()
.setAppName("DataFrameCreate");
JavaSparkContext sc = new JavaSparkContext(conf);
SQLContext sqlContext = new SQLContext(sc); // 创建出来的DataFrame完全可以理解为一张表
Dataset<Row> json = sqlContext.read().json("hdfs://spark1:9000/students.json");
//打印dataframe ;select * from 表名
json.show();
//打印dataframe的元数据信息(schema)
json.printSchema();
//查询某一列的数据
json.select("name").show();
//查询多列 name ,age 并对所有的age列的结果值加1
json.select(json.col("name") , json.col("age").plus()).show();
//对某一列的值进行过滤;eg:只展示age字段值大于18的数据
json.select(json.col("age").gt()).show();
//根据某一列进行分组,并聚合;eg:通过age分组,并求出每组的个数
json.groupBy("age").count().show();
}
}
 
Scala版本
 
package cn.spark.study.sql

import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext} /**
* 创建 dataframe
*/
object DataFrameCreateScala {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
.setMaster("dataFramecreate")
.setAppName("local") val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc) sqlContext.read.json("hdfs://spark1/test.json").show()
}
} ===================================分隔符========================================
package cn.spark.study.sql import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext} /**
* dataframe的常用操作
*/
object DataframeOperation {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
.setAppName("dataframeOperation")
.setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext.read.json("hdfs://spark1:9000/text.json") //打印dataframe
df.show()
//打印dataframe的schema
df.printSchema()
//查询某一列的数据
df.select("name").show()
//查询多列数据并进行计算;eg:查询name,age列,并对age列的值+1
df.select(df("name") , df("age")+).show()
//查询某列并对其过滤;eg:查询age列并且值大于18
df.select(df("age").gt()).show()
df.select(df("age")>).show()
//对某一列进行分组,并对分组后的结果进行求个数
df.groupBy(df("age")).count().show()
}
}
 

小记--------sparksql和DataFrame的小小案例java、scala版本的更多相关文章

  1. 大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例

    1. sortBy是Transformation算子,为什么会触发Action sortBy需要对数据进行全局排序,其需要用到RangePartitioner,而在创建RangePartitioner ...

  2. SparkSql官方文档中文翻译(java版本)

    1 概述(Overview) 2 DataFrames 2.1 入口:SQLContext(Starting Point: SQLContext) 2.2 创建DataFrames(Creating ...

  3. SparkSQL和DataFrame

    SparkSQL和DataFrame SparkSQL简介 Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用.它 ...

  4. 【sparkSQL】DataFrame的常用操作

    scala> import org.apache.spark.sql.SparkSession import org.apache.spark.sql.SparkSession scala> ...

  5. _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)

    博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  6. 35、sparkSQL及DataFrame

    一.saprkSQL背景 Spark 1.0版本开始,推出了Spark SQL.其实最早使用的,都是Hadoop自己的Hive查询引擎:但是后来Spark提供了Shark:再后来Shark被淘汰,推出 ...

  7. sparkSQL获取DataFrame的几种方式

    sparkSQL获取DataFrame的几种方式 1. on a specific DataFrame. import org.apache.spark.sql.Column df("col ...

  8. SparkSQL学习进度9-SQL实战案例

    Spark SQL  基本操作 将下列 JSON 格式数据复制到 Linux 系统中,并保存命名为 employee.json. { "id":1 , "name&quo ...

  9. dataframe 数据统计可视化---spark scala 应用

    统计效果: 代码部分: import org.apache.spark.sql.hive.HiveContext import org.apache.spark.{Logging, SparkConf ...

随机推荐

  1. 写简单的tb(testbench)文件来测试之前的FSM控制的LED

    先上我之前写的状态机控制的led代码led_test.v module led_test(clk,led_out); input clk; :] led_out; initial begin led_ ...

  2. Django-安装/分组命名/路由分发

    一.安装Django 命令行窗口: pycharm安装: 二.创建Django项目 命令行窗口创建项目: 访问地址: 表示访问成功 注意如果我们在命令行窗口创建的应用需要我们手动的在django的se ...

  3. Linux 删除文件夹和文件的命令(强制删除包括非空文件)

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就 ...

  4. javascript中的BOM

    浏览器对象模型BOM,提供了访问浏览器的接口.这些功能大多和网页内容无关,多年来,由于缺乏规范导致BOM中的不同方法在不同浏览器中的实现有所差异,直到html5,才将BOM的主要方面纳入规范. BOM ...

  5. mysql 查看当前正在执行的语句

    查看当前正在执行的语句 show processlist:show processlist; 结束正在执行的语句进程 kill 进程id

  6. 2.RabbitMq-持久化

    RabbitMq-消息持久化 问题:怎样保证消息不因生产者gg而丢失我们知道了如何在消费者的角度保证消息不丢失,但如果生产者gg了呢,消息同样会丢失,生产者gg后会默认丢弃所有的消息,除非告诉它某些消 ...

  7. 完全免费,再也不用担心转pdf文件乱来乱去的问题了

    完全免费,再也不用担心转pdf文件乱来乱去的问题了. 源代码:https://github.com/xlgwr/WpsToPdf.git 第三方插件Bye Bye... 功能说明 主要引用Wps金山办 ...

  8. IO之复制文件的四种方式

    1. 使用FileStreams复制 这是最经典的方式将一个文件的内容复制到另一个文件中. 使用FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B. 这是 ...

  9. Springboot整合 mybatis-generator

    1.pom.xml文件中 生成依赖 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId ...

  10. 【论文学习】Blind Super-resolution Image Reconstruction Based On Novel Blur Type Identification

    机翻 <基于新型模糊类型识别的盲超分辨率图像重建>