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. neo4j︱与python结合的py2neo使用教程

    —- 目前的几篇相关:—– neo4j︱图数据库基本概念.操作罗列与整理(一) neo4j︱Cypher 查询语言简单案例(二) neo4j︱Cypher完整案例csv导入.关系联通.高级查询(三) ...

  2. cropbox.js 头像裁剪插件

    cropbox.js 一个轻量级和简单的JavaScript,Jquery,YUI插件来裁剪您的头像. 特征 支持dataUrl显示图像(函数getDataURL) 支持Blob上传图片(函数getB ...

  3. Ant环境搭建

    1.上传安装包到linux服务器 2.解压缩 tar zxvf  apache-ant-1.10.1-bin.tar.gz 3.修改环境变量 vim /etc/profile 添加以下内容 expor ...

  4. js scroll动画

    知识点 1.window.scrollTo (x,y):可以把内容滚动到指定位置  scroll  scroll:卷动意思(书卷)  从上到下移动   1.window.onscroll 窗口滚动事件 ...

  5. 22.从上往下打印二叉树 Java

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 就是二叉树的层序遍历.借助一个队列就可以实现.使用两个队列一个存放节点,一个存放值.先将根节点加入到队列中,然后遍历队列中的 ...

  6. 安装docker以及常规操作

    一.安装 docker对内核版本是有要求的,反正建议用7以上的版本,少坑 如果需要卸载旧版本(凡是卸载删除操作都要谨慎!): yum remove docker \ docker-client \ d ...

  7. 【转载】详解CI、CD相关概念

    在软件的编译发布的过程中,经常能够看到CI.CD这样的词语.其实他们是专业的缩写短语,这里介绍下他们的概念和区别. 敏捷软件开发 敏捷软件开发,英文全称:Agile software developm ...

  8. 压力测试 Jmeter的简单测试及常用查看结果参数介绍

    (1)保存方案 (2)创建线程组 线程组用来模拟用户的并发访问 线程组主要包含三个参数:线程数.准备时长(Ramp-Up Period(in seconds)).循环次数. 线程数:虚拟用户数.一个虚 ...

  9. ubuntu php

    ubuntu 12.04安装php7 和配置apache2 https://www.cxybj.com/?p=231 https://blog.csdn.net/u011608531/article/ ...

  10. qt 之http学习

    在Qt网络编程中,需要用到协议,即HTTP.它是超文本传输协议,它是一种文件传输协议. 新建工程名为“http”,然后选中QtNetwork模块,最后Base class选择QWidget.注意:如果 ...