zoukankan      html  css  js  c++  java
  • sprak-sql-01-基础

    sql语言分为四类
    1.数据查询语言DQL (查询语句)
    2.数据操纵语言DML (删除、创建、更新)
    3.数据定义语言DDL (创建数据库中的各种对象—–表、视图、索引、同义词、聚簇)
    4.数据控制语言DCL (数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视)
      4.1-> GRANT:授权。
      4.2-> REVOKE:撤销授权。
    4.3-> ROLLBACK
    4.3-> COMMIT
    提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。 
    (1) 显式提交 
    用COMMIT命令直接完成的提交为显式提交。其格式为: 
      SQL>COMMIT; 
    (2) 隐式提交 
    用SQL命令间接完成的提交为隐式提交。这些命令是: 
      ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。 
    (3) 自动提交 
    若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:SQL>SET AUTOCOMMIT ON;


    什么是sql?
    1.在没有sql之前人肉工作:1.自己写标准的格式文件,自己放到规定的目录下,然后把文件的主要分类信息保存起来方便查找,但是当文件越来越大,工作效率极为低下
    2.出现来sql,有表、表有表头、有列、有元数据,表的名称是虚拟的,其实from table_name 找的就是元数据,元数据记录着文件存储的地址。我们可以通过sql解析文件




    spark基础

    sql 字符串 -> dataset 对rdd的一个包装(优化器) -> 只有RDD才能触发DAGScheduler

    pom:
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.3.4</version>
    </dependency>
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.3.4</version>
    </dependency>



    // spark基础 def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("spark_sql") val session = SparkSession.builder().config(conf).getOrCreate() val sc = session.sparkContext sc.setLogLevel("ERROR") val databases: Dataset[Database] =
    session.catalog.listDatabases() databases.show()

    +-------+----------------+--------------------+
    | name| description| locationUri|
    +-------+----------------+--------------------+
    |default|default database|file:/D:/code/sca...|
    +-------+----------------+--------------------+



        val tables = session.catalog.listTables()
        tables.show()

    +----+--------+-----------+---------+-----------+
    |name|database|description|tableType|isTemporary|
    +----+--------+-----------+---------+-----------+
    +----+--------+-----------+---------+-----------+

    
    
        val functions = session.catalog.listFunctions()
        functions.show(10,true)
      }

    +----+--------+-----------+--------------------+-----------+
    |name|database|description| className|isTemporary|
    +----+--------+-----------+--------------------+-----------+
    | !| null| null|org.apache.spark....| true|
    | %| null| null|org.apache.spark....| true|
    | &| null| null|org.apache.spark....| true|
    | *| null| null|org.apache.spark....| true|
    | +| null| null|org.apache.spark....| true|
    | -| null| null|org.apache.spark....| true|
    | /| null| null|org.apache.spark....| true|
    | <| null| null|org.apache.spark....| true|
    | <=| null| null|org.apache.spark....| true|
    | <=>| null| null|org.apache.spark....| true|
    +----+--------+-----------+--------------------+-----------+
    only showing top 10 rows

     

    val dataFrame = session.read.json("data/bigdata-spark_data_json.txt")
    dataFrame.show()
    // 现象:项目目录下多了空文件夹spark-warehouse,原因是没有开启enableHiveSupport,导致元数据存不进去

    +----+---------+
    | age| name|
    +----+---------+
    | 20| zhangsan|
    |null| lisi|
    | 18| wangwu|
    | 21| a|
    | 20|zhangsan1|
    |null| lisi1|

    only showing top 20 rows

    dataFrame.printSchema()

    root
    |-- age: long (nullable = true)
    |-- name: string (nullable = true)

     
    // dataFrame向catalog中注册表名
    dataFrame.createTempView("temp_table_name")
    val frame: DataFrame = session.sql("select name from temp_table_name")
    frame.show()


    
    

    +---------+
    | name|
    +---------+
    | zhangsan|
    | lisi|
    | wangwu|
    | a|
    |zhangsan1|
    | lisi1|

    only showing top 20 rows


    session.catalog.listTables().show()

    +---------------+--------+-----------+---------+-----------+
    | name|database|description|tableType|isTemporary|
    +---------------+--------+-----------+---------+-----------+
    |temp_table_name| null| null|TEMPORARY| true|
    +---------------+--------+-----------+---------+-----------+




    模仿客户端请求,控制台输入sql,模仿客户行为

      import scala.io.StdIn._
    
        while(true){
          val sql: String = readLine("input your sql: ")
    
          session.sql(sql).show()
        }
  • 相关阅读:
    luoguP1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)
    luoguP1447 [NOI2010]能量采集
    POJ2559 Largest Rectangle in a Histogram (单调栈
    2038: [2009国家集训队]小Z的袜子(hose)
    codeforces 835C Star sky
    HDU1859 最小长方形 (水
    HDU 1754 I Hate It
    HDU 1698 Just a Hook(线段树
    HDU 1394 Minimum Inversion Number(树状数组/归并排序实现
    HDU1166 敌兵布阵(树状数组实现
  • 原文地址:https://www.cnblogs.com/bigdata-familyMeals/p/14490215.html
Copyright © 2011-2022 走看看