• spark sql


    1.首先检查Hadoop相关进程,是否已经启动。若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。

    view plain copy
    jps
    cd /apps/hadoop/sbin
    ./start-all.sh
    2.在Linux本地新建/data/spark5目录。

    view plain copy
    mkdir -p /data/spark5
    3.切换到/data/spark5目录下,使用wget命令,下载http://192.168.1.100:60000/allfiles/spark5中的orders和order_items。

    view plain copy
    cd /data/spark5
    wget http://192.168.1.100:60000/allfiles/spark5/orders
    wget http://192.168.1.100:60000/allfiles/spark5/order_items
    4.首先,在HDFS上新建/myspark5目录,然后将/data/spark5目录下的orders与order_items文件,上传到HDFS的/myspark5目录下。

    view plain copy
    hadoop fs -mkdir /myspark5
    hadoop fs -put /data/spark5/orders /myspark5
    hadoop fs -put /data/spark5/order_items /myspark5
    5.启动Spark Shell。

    view plain copy
    spark-shell
    6.在spark-shell下,使用case class方式定义RDD,创建orders表。

    view plain copy
    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    import sqlContext.implicits._
    case class Orders(order_id:String,order_number:String,buyer_id:String,create_dt:String)
    val dforders = sc.textFile("/myspark5/orders").map(_.split(' ')).map(line=>Orders(line(0),line(1),line(2),line(3))).toDF()
    dforders.registerTempTable("orders")

    验证创建的表是否成功。

    view plain copy
    sqlContext.sql("show tables").map(t=>"tableName is:"+t(0)).collect().foreach(println)
    sqlContext.sql("select order_id,buyer_id from orders").collect

    7.在Spark Shell下,使用applyScheme方式定义RDD,创建order_items表。

    view plain copy
    import org.apache.spark.sql._
    import org.apache.spark.sql.types._
    val rddorder_items = sc.textFile("/myspark5/order_items")
    val roworder_items = rddorder_items.map(_.split(" ")).map( p=>Row(p(0),p(1),p(2) ) )
    val schemaorder_items = "item_id order_id goods_id"
    val schema = StructType(schemaorder_items.split(" ").map(fieldName=>StructField(fieldName,StringType,true)) )
    val dforder_items = sqlContext.applySchema(roworder_items, schema)
    dforder_items.registerTempTable("order_items")

    验证创建表是否成功。

    view plain copy
    sqlContext.sql("show tables").map(t=>"tableName is:"+t(0)).collect().foreach(println)
    sqlContext.sql("select order_id,goods_id from order_items ").collect

    8.将order表及order_items表进行join操作,统计该电商网站,都有哪些用户购买了什么商品。

    view plain copy
    sqlContext.sql("select orders.buyer_id, order_items.goods_id from order_items join orders on order_items.order_id=orders.order_id ").collect

    9.退出Spark shell模式

    view plain copy
    exit
    下面演示Spark SQL模式

    10.启动Spark SQL。

    view plain copy
    spark-sql
    11.创建表orders及表order_items。

    view plain copy
    create table orders (order_id string,order_number string,buyer_id string,create_dt string)
    row format delimited fields terminated by ' ' stored as textfile;
    view plain copy
    create table order_items(item_id string,order_id string,goods_id string)
    row format delimited fields terminated by ' ' stored as textfile;
    12.查看已创建的表。

    view plain copy
    show tables;

    表名后的false意思是该表不是临时表。

    13.将HDFS中/myspark5下的orders表和order_items表中数据加载进刚创建的两个表中。

    view plain copy
    load data inpath '/myspark5/orders' into table orders;
    load data inpath '/myspark5/order_items' into table order_items;

    14.验证数据是否加载成功。

    view plain copy
    select * from orders;
    select * from order_items;

    15.处理文件,将order表及order_items表进行join操作,统计该电商网站,都有哪些用户购买了什么商品。

    view plain copy
    select orders.buyer_id, order_i

    1.首先检查Hadoop相关进程,是否已经启动。若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。

    view plain copy
    jps
    cd /apps/hadoop/sbin
    ./start-all.sh
    2.在Linux本地新建/data/spark6目录。

    view plain copy
    mkdir -p /data/spark6
    切换到/data/spark6目录下,使用wget命令,下载http://192.168.1.100:60000/allfiles/spark6中的文件。

    view plain copy
    cd /data/spark6
    wget http://192.168.1.100:60000/allfiles/spark6/goods_visit.json
    3.将文件goods_visit.json,上传到HDFS的/myspark6目录下,若目录不存在则需提前创建。

    view plain copy
    hadoop fs -mkdir /myspark6
    hadoop fs -put /data/spark6/goods_visit.json /myspark6
    4.启动Spark Shell。

    view plain copy
    spark-shell
    5.读取HDFS中/myspark6的goods_visit.json文件。

    view plain copy
    val df=sqlContext.read.json("hdfs://localhost:9000/myspark6/goods_visit.json")

    6.查看goods_visit.json中的所有数据。

    view plain copy
    df.show()

    7.查看goods_visit.json的表结构。

    view plain copy
    df.printSchema()

    8.只查看商品ID(goods_id)。

    view plain copy
    df.select("goods_id").show()

    9.统计文件行数。

    view plain copy
    df.count

    10.条件查询,查询点击次数超过500商品。(show是返回字段和表数据,collect是返回集合)

    view plain copy
    df.filter(df("click_num")>500).show

    11.统计点击次数的最值、总和及平均数。

    view plain copy
    df.agg(max("click_num"),sum("click_num"),min("click_num"),avg("click_num")).show

    12.过滤点击次数小于200的商品。

    view plain copy
    df.filter(df("click_num") < 200).show()

    13.按点击次数进行分组统计。

    view plain copy
    df.groupBy("click_num").count().show()

    14.读取goods_visit.json文件,保存为parquet格式。

    view plain copy
    val df = sqlContext.read.format("json").load("hdfs://localhost:9000/myspark6/goods_visit.json")
    df.select("goods_id", "click_num").write.format("parquet").save("goods_visit.parquet")

    15.查看保存的goods_visit.parquet文件。

    view plain copy
    hadoop fs -ls /user/zhangyu

  • 相关阅读:
    CSS初识
    HTML 初识
    索引
    表查询前之数据导入
    mysql练习2
    AMP+EPP3.0的开发环境配置
    C++异步编程资料汇集贴
    Windows8中如何打包和安装一个本地的Metro类型应用(转)
    std::string, std::wstring, wchar_t*, Platform::String^ 之间的相互转换
    windows RT开发笔记:WinRT DLL及其调用研究
  • 原文地址:https://www.cnblogs.com/hannahzhao/p/11960064.html
Copyright © 2020-2023  润新知