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. IntelliJ IDEA 创建 Git 分支并且 Push 到远程

    在 IntelliJ 的右下角,你可以看到当前的 Git 分支,然后你可以单击这个分支后,在弹出的界面的最上方有一个新建分支的选项. 然后再弹出的界面中,输入你要创建的分支名称后回车输入. 然后从项目 ...

  2. Python3 Address already in use 解决方法

    1.查看使用端口号netstat -ntlp 2.根据端口号找到pid 3.杀死程序 kill -9 pid 4.重新启动程序 简单粗暴 我使用python3时编写Socket,linux系统下使用c ...

  3. CodeForces Good Bye 2016

    A题,水题略过. B题,也水,但是想复杂了.只要运动超出[0,20000]的范围就算不可能了. C题,我自己的方法是解不等式,然后取最大的答案即可.代码如下: #include <stdio.h ...

  4. 预处理、const、static与sizeof-使用const与#define的特点及区别

    1:#define只是用来做文本替换的.例如: #define PI 3.1415926 float angle; angle=*PI/; 那么,程序进行编译的时候,编译器会首先将“#define P ...

  5. jwt token and shiro

    openapi可以完全开放访问,也可以使用jwt token进行简单的认证,还可以使用shiro支持更细致的权限管理. handler.yml配置了security和shiro两个handler: s ...

  6. 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础

    目录 基础问题 实验目的 实验内容 实验步骤 实验总结与体会 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 返回目录 实验内容 WebGoat准备工作 SQL注入攻击 命令注入(Comman ...

  7. Oracle中根据列名找到所属的表

    oracle中如何根据一个字段名查找出所属的表名? 用如下语句, select * from user_tab_columns where column_name='列名', 例子:select * ...

  8. react 闲谈

    从事前端一段时间了,公司用的框架都是vue,但是不知为何对react却情有独钟,这是不是所谓的吃着碗里的看着锅里的 哈哈哈 从头好好总结下react吧 小白一个 大神勿喷 瞎说一 react是由两部分 ...

  9. R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1311.2524.pdf Abstract Our approach combines two key insights: (1) one c ...

  10. js对象和jQuery对象的区别

    (1)js对象的三种基本定位方式 (A)通过ID属性:document.getElementById() (B)通过NAME属性:document.getElementsByName() (C)通过标 ...