您的位置: 首页 > IT文章 > External DataSource 之parquet【Spark SQL】 External DataSource 之parquet【Spark SQL】 分类: IT文章 • 2024-10-26 12:03:12 .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() }