External DataSource 之parquet【Spark SQL】

package february.sql

import org.apache.spark.sql.SparkSession

/**
  *
  *                ======  Spark SQL默认处理的format是parquet  ====
  * Description:  Parquet 文件操作
  *
  * 处理parquet数据
  * spark.read.format("parquet").load(path)
  * df.write.format("parquet").save(path)
  *
  * cd $SPARK_HOME/bin
  *  ./spark-shell --master local[2] --jars ~/software/mysql-connect-java-5.1.31-bin.jar
  *
  *
  * val DEFAULT_DATA_SOURCE_NAME = SQLConfigBuilder("spark.sql.sources.default")
  * .doc("The default data source to use in input/output.")
  * .stringConf
  * .createWithDefault("parquet")
  * parquet是Spark SQL默认的数据源
  *
  * @Author: 留歌36
  * @Date: 2019/2/27 19:53
  */
object ParquetAPP extends App {
  val spark = SparkSession.builder().appName(this.getClass.getSimpleName).master("local[2]").getOrCreate()

  // 方式一:  spark.read.format("parquet").load(path) 这个是标准的写法
  val peopleDF = spark.read.format("parquet").load("F:\resources\users.parquet")
  // 打印表的定义信息
//  peopleDF.printSchema()
  // 显示DF的前20条数据
//  peopleDF.show()

  // 这里只取两列
//  peopleDF.select("name","favorite_color").show()

  // 将取得的两列的值写入文件(Json格式)
//  peopleDF.select(userDF("name"),userDF("favorite_color")).write.format("json").save("F:\tmp\jsonout")

  // 方式二:spark.read.load(path) 简化的写法
  val peopleDF2 =  spark.read.load("F:\resources\users.parquet")
//  peopleDF2.show()

  // 方式三:spark.read.format("parquet").option("path",path).load().show()  参数的方式
  spark.read.format("parquet").option("path","F:\resources\users.parquet").load().show()

  // 方式四:Spark.sql 处理parquet文件
//  CREATE TEMPORARY VIEW parquetTable  创建的临时表
//    USING org.apache.spark.sql.parquet 指定sql处理的文件类型
//  OPTIONS (
//    path "examples/src/main/resources/people.parquet"
//  )
//
//  SELECT * FROM parquetTable


//  在生产环境中一定要注意设置spark.sql.shuffle.partitions,默认是200,及需要配置分区的数量
//  spark.sqlContext.setConf("spark.sql.shuffle.partitions","10")


  spark.stop()
}

原文地址:https://www.cnblogs.com/liuge36/p/12614756.html