zoukankan      html  css  js  c++  java
  • Scala构建元数据

    反射方式构建元数据: 

      通过反射来获取RDD中的Schema信息。这种方式适合于列名(元数据)已知的情况下

        步骤:

          1.SparkConf配置环境

          2.SparkContext初始化上下文

          3.SQLContext初始化SparkSQL上下文

          4.创建一个普通的RDD(sc.textFile)

          5.使用map方法切割行数据,切割取出数据放入case类中

             studented(lines(0).toInt, lines(1), lines(2).toInt)

          6.反射方式中普通RDD创建DataFrame需要导入隐式转换

             //注意:需要导入一个隐式转换
             import sQLContext.implicits._
             val df: DataFrame = rdd2.toDF()

          7.注册临时表

             方式一: df.createTempView("student1")
             
    方式二: 
    df.registerTempTable("student")  //过时了

          8.写SQL语句,自由的浪起来

             val sql = sQLContext.sql("select * from student")

          9.保存结果到本地或者HDFS

            //保存查询结果到本地
            
    sql.write.json("c:\demo\gaoyong.json")
            //保存查询结果到HDFS
            
    sql.write.json("hdfs://awen01:9000/json")

    编程接口方式构建元数据:

      通过编程接口的方式将Schema信息应用于RDD,这种方式可以处理那种在运行时才能知道列的方式。

    一般不知道元数据的情况下使用.

        步骤:

          1.SparkConf配置环境

          2.SparkContext初始化上下文

          3.SQLContext初始化SparkSQL上下文

          4.创建一个普通的RDD(sc.textFile)

          5.使用map切割行数据,将需要的字段放入到Row类中

            val lines: RDD[Row] = rdd.map(t => {
            val str = t.split(",")
              Row(str(0).toInt, str(1), str(2).toInt)
            })

          6.编程结构的方式需要构建表的框架,构建StructType,及其元数据

    val structType: StructType = StructType(Array(
          StructField("ids",IntegerType,true)
          StructField("names",StringType,true)
          StructField("ages",IntegerType,true)  
    ))    

          7.构建DataFrame

            val df = sQLContext.createDataFrame(lines,structType)

          8.注册临时表

             方式一: df.createTempView("student1")
             方式二: 
    df.registerTempTable("student")  //过时了

          9.写SQL语句,自由的浪起来

             val sql = sQLContext.sql("select * from student")

          10.保存结果到本地或者HDFS

            //保存查询结果到本地
            sql.write.json("c:\demo\gaoyong.json")
            //保存查询结果到HDFS
            sql.write.json("hdfs://awen01:9000/json")

  • 相关阅读:
    daper
    存储过程事务
    dengluzhucehaiyouxianshiMVC
    遍历加监听
    类的操作
    轮播图
    定时器的应用(三)
    定时器的应用(二)
    定时器的应用(一)
    延时调用
  • 原文地址:https://www.cnblogs.com/gentle-awen/p/10011492.html
Copyright © 2011-2022 走看看