Spark 2.x管理与开发-Spark SQL-【在IDEA中开发Spark SQL程序】(一)指定Schema格式 

准备的数据:

 

Scala代码:

package sqlExamples
/**
 * 创建DataFrame(一)
 * 通过:使用StructType的方式
 */
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.StructField
import org.apache.spark.sql.types.StringType
import org.apache.spark.sql.types.IntegerType
import org.apache.spark.sql.types.StructType
import org.apache.spark.sql.Row

object Read {
  def main(args: Array[String]): Unit = {
    //1.首先,使用SparkSession来创建Spark的运行环境
    val spark = SparkSession.builder().master("local").appName("UnderstandSparkSession").getOrCreate()
    //2.从指定地址创建RDD
    val personRDD = spark.sparkContext.textFile("D:/student.txt").map(_.split("\t"))
    //3.通过StructType声明Schema
    val schema = StructType(
      List(
        StructField("id", IntegerType),
        StructField("name", StringType),
        StructField("age", IntegerType)))
    //4.将RDD映射到rowRDD
    val rowRDD = personRDD.map(p => Row(p(0).toInt, p(1), p(2).toInt))
    //5.生成DataFrame
    val personDF=spark.createDataFrame(rowRDD, schema)
    //6.注册视图
    personDF.createOrReplaceTempView("tablePerson")
    //7.执行的SQL语句:按年龄排序,取前4个
    val df=spark.sql("select * from tablePerson order by age limit 4")
    //触发计算
    df.show()
    //8.停掉Spark
    spark.stop()
  }
}

结果:

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3