DSP广告数据系统的提交job到yarn运行案例

上一节        广告精准投放的代码封装优化及parquet文件分区操作案例

补充一点

若不想分区,指定设置这个参数即可:

// partitionBy 对数据按照省份进行分区
    dataFrame.write.parquet(parquetOutPath)

parquet压缩格式设置

 // spark序列化优化参数
      val sparkParams = Map[String, String](
          "spark.serializer" -> classOf[KryoSerializer].getName,
          "spark.sql.parquet.compression.codec" -> "snappy" // 设置parquet文件的压缩格式
      )

启动程序后运行,在自己的磁盘文件里可以查看

说明:分区会产生大量shuffle

parquet文件读取测试

dolphin-doit01\src\main\scala\cn\sheep\dolphin\etl\Sql4Parquet.scala


package cn.sheep.dolphin.etl

import cn.sheep.dolphin.common.DolphinAppComm
import org.apache.spark.sql.SQLContext

/**
 * author: old sheep
 * Created 2021/04/03
 */
object Sql4Parquet {

  def main(args: Array[String]): Unit = {

    val sc = DolphinAppComm.createSparkContext("测试parquet读取")

    val sqlc = new SQLContext(sc)
    val dataFrame = sqlc.read.parquet("C:\\Users\\mrman\\dolphin-doit01\\parquet")

    dataFrame.show(100)

    sc.stop()

  }
}

启动Sql4Parquet 程序后运行

各省市数据分布统计-SQL

dolphin-doit01\src\main\scala\cn\sheep\dolphin\report\ProvinceCityAnalysis.scala


package cn.sheep.dolphin.report

import cn.sheep.dolphin.common.DolphinAppComm
import org.apache.spark.sql.SQLContext

/**
 * 省市数据分析
 * author: old sheep
 * Created 2021/04/03 15:06
 */
object ProvinceCityAnalysis {
  def main(args: Array[String]): Unit = {

    if(args.size != 2) {
      println(
        """
          |Usage: cn.sheep.dolphin.report.ProvinceCityAnalysis
          |参数:<parquetPath> <outputPath>
        """.stripMargin)
    }

    val Array(parquetPath, outputPath) = args

    val sc = DolphinAppComm.createSparkContext("省市数据分析SQL")
    val sqlc = new SQLContext(sc)

    // 读取parquet文件
    val dataFrame = sqlc.read.parquet(parquetPath)

    // 将dataFrame注册成表
    dataFrame.registerTempTable("t_adlog")

    // 针对数据表进行sql查询: 每个省市的数据记录条数
    val result =sqlc.sql(
      """
        |select substring(requestdate, 0, 10) date, provincename, cityname, count(1) cnt
        |from t_adlog
        |group by provincename,cityname, substring(requestdate, 0, 10)
      """.stripMargin)

    // JSON
    result.coalesce(4).write.json(outputPath)

    sc.stop()
  }
}

 配置参数据

在磁盘查看文件

查看json数据

往mysql插入数据库

// MYSQL
 result.write.mode(SaveMode.Append).jdbc(DolphinConfig._url, "r_procity_analysis", DolphinConfig.props)

运行程序ProvinceCityAnalysis程序,在mysql可以查看数据库

提交job到yarn运行

打包后的jar文件上传到虚拟机运行,执行命令

[root@Master ~]# spark-submit \
>  --class cn.sheep.dolphin.etl.Bz2ParquetV2 \
>  --master yarn \
>  --deploy-mode cluster \
>  --executor-memory 1G \
>  --num-executors 3 \   
 /root/dolphin-doit01-0.0.1-SNAPSHOT.jar /adlogs /adlogs/parquet
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值