import com.twq.dataset.Utils._
import org.apache.spark.sql.{SaveMode, SparkSession} object FilePartitionTest {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder()
.appName("FilePartitionTest")
.getOrCreate() val sessions = spark.read.parquet(s"${BASE_PATH}/trackerSession")
sessions.show()
sessions.printSchema() sessions.createOrReplaceTempView("non_partition_table")
spark.sql("select * from non_partition_table where day = 20170903").show() //对数据按照年月日进行分区
sessions.write.mode(SaveMode.Overwrite).partitionBy("cookie").parquet(s"${BASE_PATH}/trackerSession_partition") val partitionDF = spark.read.parquet(s"${BASE_PATH}/trackerSession_partition")
partitionDF.show()
partitionDF.printSchema() //用sql查询某20170903这天的数据
partitionDF.createOrReplaceTempView("partition_table")
spark.sql("select * from partition_table where cookie='cookie1'").show() //取20170903这天的数据
val day03DF = spark.read.parquet(s"${BASE_PATH}/trackerSession_partition/year=2017/month=201709/day=20170903")
day03DF.show()
day03DF.printSchema() //bucket只能用于hive表中
//而且只用于parquet、json和orc文件格式的文件数据
sessions.write
.partitionBy("year")
.bucketBy(24, "cookie")
.saveAsTable("session") spark.stop()
}
}

  

SparkSQL读写外部数据源--数据分区的更多相关文章

  1. SparkSQL读写外部数据源-基本操作load和save

    数据源-基本操作load和save object BasicTest { def main(args: Array[String]): Unit = { val spark = SparkSessio ...

  2. SparkSQL读写外部数据源-通过jdbc读写mysql数据库

    object JdbcDatasourceTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builde ...

  3. SparkSQL读写外部数据源--csv文件的读写

    object CSVFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .ap ...

  4. SparkSQL读写外部数据源-jext文件和table数据源的读写

    object ParquetFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() ...

  5. SparkSQL读写外部数据源-json文件的读写

    object JsonFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .m ...

  6. 入门大数据---SparkSQL外部数据源

    一.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景. CSV JSON Parquet ORC JD ...

  7. 实时更新Excel文档外部数据源的数据

    实时更新Excel文档外部数据源的数据 单元格区域.Excel 表.数据透视表或数据透视图均可以连接到外部数据源(数据源:用于连接数据库的一组存储的"源"信息.数据源包含数据库服务 ...

  8. Update(Stage4):sparksql:第1节 SparkSQL_使用场景_优化器_Dataset & 第2节 SparkSQL读写_hive_mysql_案例

    目标 SparkSQL 是什么 SparkSQL 如何使用 Table of Contents 1. SparkSQL 是什么 1.1. SparkSQL 的出现契机 1.2. SparkSQL 的适 ...

  9. 数据分区------《Designing Data-Intensive Applications》读书笔记9

    进入到第六章了,我们要开始聊聊分布式系统之中的核心问题:数据分区.分布式系统通常是通过大规模的数据节点来处理单机没有办法处理的海量数据集,因此,可以将一个大型数据集可以分布在多个磁盘上,查询负载可以分 ...

随机推荐

  1. excel数据分析流程

    1.获取数据 2.去掉空值.空行.重复行 3.去掉无用行,筛选出需要行 4.分组数据 5.数据排序

  2. 1. Spark GraphX概述

    1.1 什么是Spark GraphX Spark GraphX是一个分布式图处理框架,它是基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求.那么什么是图 ...

  3. Spring Boot Freemarker特别篇之contextPath【从零开始学Spring Boot

      需求缘起:有人在群里@我:请教群主大神一个问题,spring boot  + freemarker 怎么获取contextPath 头疼死我了,网上没一个靠谱的 .我就看看之前博客中的 [Spri ...

  4. 1005 继续(3n+1)猜想(C#)

    一.题目内容: 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n= ...

  5. Spring对于事务的控制@Transactional注解详解

    引用自:https://blog.csdn.net/fanxb92/article/details/81296005 先简单介绍一下Spring事务的传播行为: 所谓事务的传播行为是指,如果在开始当前 ...

  6. 英语wacche腕表

    手表 (戴在手腕上的计时仪器) 手表,或称为腕表,是指戴在手腕上,用以计时/显示时间的仪器,手表在英语里watch源自中世纪wacche这一词汇. 手表通常是利用皮革.橡胶.尼龙布.不锈钢等材料,制成 ...

  7. POSIX多线程

    全文共分四部分: POSIX多线程—概述    POSIX多线程—异步编程举例    POSIX多线程—线程基本概念    POSIX多线程—互斥量概述 POSIX多线程—概述 Content 1. ...

  8. idea忽略并隐藏.idea文件夹.iml文件不提交到svn

    File-->setting-->Editor-->File Types 选中.boringignore,添加*.iml;.idea;即可

  9. 【hadoop】hadoop3.2.0应用环境搭建与使用指南

    下面列出我搭建hadoop应用环境的文章整理在一起,不定期更新,供大家参考,互相学习!!! 杂谈篇: [英语学习]Re-pick up English for learning big data (n ...

  10. 大数据之kafka-05.讲聊聊Kafka的版本号

    今天聊聊kafka版本号的问题,这个问题实在是太重要了,我觉得甚至是日后能否用好kafka的关键.上一节我们介绍了kafka的几种发行版,其实不论是哪种kafka,本质上都内嵌了最核心的Apache ...