• 新闻实时分析系统 SQL快速离线数据分析


    1.Spark SQL概述
    1)Spark SQL是Spark核心功能的一部分,是在2014年4月份Spark1.0版本时发布的。

    2)Spark SQL可以直接运行SQL或者HiveQL语句

    3)BI工具通过JDBC连接SparkSQL查询数据

    4)Spark SQL支持Python、Scala、Java和R语言

    5)Spark SQL不仅仅是SQL

    6)Spark SQL远远比SQL要强大

    7)Spark SQL处理数据架构

    8)Spark SQL简介
    Spark SQL is a Spark module for structured data processing

    9)Spark SQL的愿景
    a)Write less code
    对不同的数据类型使用统一的接口来读写。

    b)Read less data
    提升大数据处理速度最有效的方法就是忽略无关的数据。
    (1)使用列式存储(columnar formats),比如Parquet、ORC、RCFile
    (2)使用分区裁剪(partitioningpruning),比如按天分区,按小时分区等
    (3)利用数据文件中附带的统计信息进行剪枝:例如每段数据都带有最大值、最小值和NULL值等统计信息,当某一数据段肯定不包含查询条件的目标数据时,可以直接跳过这段数据。(例如字段age某段最大值为20,但查询条件是>50岁的人时,显然可以直接跳过这段)
    (4)将查询源中的各种信息下推至数据源处,从而充分利用数据源自身的优化能力来完成剪枝、过滤条件下推等优化。
    c)Let the optimizer do the hard work
    Catalyst优化器对SQL语句进行优化,从而得到更有效的执行方案。即使我们在写SQL的时候没有考虑这些优化的细节,Catalyst也可以帮我们做到不错的优化结果。

    2.Spark SQL服务架构

    3.Spark SQL 与Hive集成(spark-shell)
    1)需要配置的项目
    a)将hive的配置文件hive-site.xml拷贝到spark conf目录,同时添加metastore的url配置。
    vi hive-site.xml
    <property>
    <name>hive.metastore.uris</name>
    <value>thrift://bigdata-pro01.kfk.com:9083</value>
    </property>
    b)拷贝hive中的mysql jar包到spark的jar目录下
    cp hive-0.13.1-bin/lib/mysql-connector-java-5.1.27-bin.jar spark-2.2-bin/jars/
    c)检查spark-env.sh 文件中的配置项
    vi spark-env.sh
    HADOOP_CONF_DIR=/opt/modules/hadoop-2.5.0/etc/hadoop
    2)启动服务
    a)检查mysql是否启动
    #查看状态
    service mysqld status
    #启动
    service mysqld start
    b)启动hive metastore服务
    bin/hive --service metastore
    c)启动hive
    bin/hive
    show databases;
    create database kfk;
    create table if not exists test(userid string,username string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS textfile;
    load data local inpath "/opt/datas/kfk.txt" into table test;
    本地kfk.txt文件
    more /opt/datas/kfk.txt
    0001 spark
    0002 hive
    0003 hbase
    0004 hadoop
    d)启动spark-shell
    bin/spark-shell
    spark.sql("select * from kfk.test").show
    0001 spark
    0002 hive
    0003 hbase
    0004 hadoop
    4.Spark SQL 与Hive集成(spark-sql)
    启动spark-sql
    bin/spark-sql
    #查看数据库
    show databases;
    default
    kfk
    #使用数据库
    use kfk
    #查看表
    show tables;
    test
    #查看表数据
    select * from test;
    5.Spark SQL之ThriftServer和beeline使用
    1)启动ThriftServer
    sbin/start-thriftserver.sh
    2)启动beeline
    bin/beeline
    !connect jdbc:hive2://bigdata-pro02.kfk.com:10000
    #查看数据库
    show databases;
    #查看表数据
    select * from kfk.test;
    6.Spark SQL与MySQL集成
    启动spark-shell
    sbin/spark-shell
    :paste
    val jdbcDF = spark
    .read
    .format("jdbc")
    .option("url", "jdbc:mysql://bigdata-pro01.kfk.com:3306/test")
    .option("dbtable", "spark1")
    .option("user", "root")
    .option("password", 123456)
    .load()
    ctr+d
    #打印读取数据
    jdbcDF.show
    7.Spark SQL与HBase集成
    Spark SQL与HBase集成,其核心就是Spark Sql通过hive外部表来获取HBase的表数据。
    1)拷贝HBase的包和hive包到spark 的jars目录下

    2)启动spark-shell
    bin/spark-shell
    val df =spark.sql("select count(1) from weblogs").show

  • 相关阅读:
    git连接远程分支
    如何找N个数中第i小的数
    DeconvNet
    深度学习中的Internal Convariate Shift (ICS)
    BA算法解决p-中位问题
    蚁群算法
    蝙蝠算法初探
    轨迹压缩之Douglas-Peucker算法之C++实现
    遗传算法---编程小试
    NYOJ 1000
  • 原文地址:https://www.cnblogs.com/misliu/p/11559134.html
Copyright © 2020-2023  润新知