spark 读写 clickhouse

一.pom.xml

<dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.2.4</version>
        </dependency>
</dependencies>

 二.spark_clickhouse_read_data.scala

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

    //1.配置环境
      val spark: SparkSession = sparkUtils.sparkSessionWithMaster("local[*]","spark_clickhouse_read_data_job")

    //2.数据源配置
    val sourceConfig: Map[String, String] = Map[String, String](
      "driver" -> "ru.yandex.clickhouse.ClickHouseDriver",
      "url" -> "jdbc:clickhouse://192.168.174.204:8123/spark_clickhouse",
      "dbtable" -> "t_order_mt",
      "user"->"admin",
      "password" ->"root"
    )


    //3.读取数据源数据
    spark
      .read
      .format("jdbc")
      .options(sourceConfig)
      .load()
      .show(true)
    //4.关闭资源
    spark.stop()
  }
}

三.spark_clickhouse_write_data.scala

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


    //1.营造环境
    val spark: SparkSession = sparkUtils.sparkSessionWithMaster("local[*]","spark_clickhouse_write_data_job")

    //创建数据 生成df
    val data: DataFrame = spark.createDataFrame(Seq(
      (101, "sku_001", 1000.00, "2020-06-01 12:00:00"),
      (103, "sku_002", 2000.00, "2020-06-01 11:00:00"),
      (104, "sku_004", 2500.00, "2020-06-01 12:00:00"),
      (105, "sku_002", 2000.00, "2020-06-01 13:00:00"),
      (106, "sku_002", 12000.00, "2020-06-01 13:00:00"),
      (109, "sku_002", 600.00, "2020-06-02 12:00:00")
    )).toDF( "id","sku_id","total_amount","create_time")

    //设置连接参数
    val config: Map[String, String] = Map[String, String](
      "batchsize" -> "2000",
      "isolationLevel" -> "NONE",
      "numPartitions" -> "1"
    )

    val url="jdbc:clickhouse://192.168.174.204:8123/spark_clickhouse"
    val dbtable="t_order_mt"
    val user="admin"
    val password="root"
    val pro = new Properties()

    pro.put("driver","ru.yandex.clickhouse.ClickHouseDriver")
    pro.put("user","admin")
    pro.put("password","root")

    // 写入数据
    data.write.mode(SaveMode.Append)
        .options(config)
        .jdbc(url,dbtable,pro)

    //关闭资源
    spark.stop()

  }

}

四.制作的sparkUtils

object sparkUtils {


  //本地运行使用
  def sparkConf(local:String,appName:String): SparkContext = {

     val conf: SparkConf = new SparkConf().setAppName(appName).setMaster(local)
     val context = new SparkContext(conf)
     return  context

  }


  //集群运行使用
  def sparkConfWithNoMaster(appName:String):SparkContext={
    val conf: SparkConf = new SparkConf().setAppName(appName)
    val context = new SparkContext(conf)
    return  context

  }

 //本地使用
  def sparkSessionWithMaster(local:String,appName:String) :SparkSession ={

    val spark: SparkSession = SparkSession.builder()
      .appName(appName)
      .master(local)
      .getOrCreate()

    return spark

  }

  //集群运行
  def sparkSessionWithNoMaster(appName:String) :SparkSession ={

    val spark: SparkSession = SparkSession.builder()
      .appName(appName)
      .getOrCreate()
    return spark

  }

}

数据分析职业是一个多金的职业,数据分析职位是一个金饭碗的职位,前景美好,但是要全面掌握大数据分析技术,非常困难,大部分学员的痛点是不能快速找到入门要点,精准快速上手。本课程采用项目驱动的方式,以Spark3和Clickhouse技术为突破口,带领学员快速入门Spark3+Clickhouse数据分析,促使学员成为一名高效且优秀的大数据分析人才。学员通过本课程的学习,不仅可以掌握使用Python3进行Spark3数据分析,还会掌握利用Scala/java进行Spark数据分析,多语言并进,力求全面掌握;另外通过项目驱动,掌握Spark框架的精髓,教导Spark源码查看的技巧;会学到Spark性能优化的核心要点,成为企业急缺的数据分析人才;更会通过ClickhouseSpark搭建OLAP引擎,使学员对大数据生态圈有一个更加全面的认识和能力的综合提升。真实的数据分析项目,学完即可拿来作为自己的项目经验,增加面试谈薪筹码。课程涉及内容:Ø  Spark内核原理(RDD、DataFrame、Dataset、Structed Stream、SparkML、SparkSQL)Ø  Spark离线数据分析(千万简历数据分析、雪花模型离线数仓构建)Ø  Spark特征处理及模型预测Ø  Spark实时数据分析(Structed Stream)原理及实战Ø  Spark+Hive构建离线数据仓库(数仓概念ODS/DWD/DWS/ADS)Ø  Clickhouse核心原理及实战Ø  Clickhouse engine详解Ø  SparkClickhouse导入简历数据,进行数据聚合分析Ø  catboost训练房价预测机器学习模型Ø  基于Clickhouse构建机器学习模型利用SQL进行房价预测Ø  Clickhouse集群监控,Nginx反向代理Grafana+Prometheus+Clickhouse+node_exporterØ  Spark性能优化Ø  Spark工程师面试宝典       课程组件:集群监控:福利:本课程凡是消费满359的学员,一律送出价值109元的实体书籍.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值