zoukankan      html  css  js  c++  java
  • SparkSQL读写外部数据源--数据分区

    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()
      }
    }
    

      

  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/tesla-turing/p/11489088.html
Copyright © 2011-2022 走看看