码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Hadoop】在spark读取clickhouse中数据


    • 读取clickhouse数据库数据

      import scala.collection.mutable.ArrayBuffer
      import java.util.Properties
      import org.apache.spark.sql.SaveMode
      import org.apache.spark.sql.SparkSession
      
      def getCKJdbcProperties(
                                 batchSize: String = "100000",
                                 socketTimeout: String = "300000",
                                 numPartitions: String = "50",
                                 rewriteBatchedStatements: String = "true"): Properties = {
          val properties = new Properties
          properties.put("driver", "ru.yandex.clickhouse.ClickHouseDriver")
          properties.put("user", "default")
          properties.put("password", "数据库密码")
          properties.put("batchsize", batchSize)
          properties.put("socket_timeout", socketTimeout)
          properties.put("numPartitions", numPartitions)
          properties.put("rewriteBatchedStatements", rewriteBatchedStatements)
          properties
        }
      // 读取click数据库数据
      val today = "2023-06-05"
      val ckProperties = getCKJdbcProperties()
      val ckUrl = "jdbc:clickhouse://233.233.233.233:8123/ss"
      val ckTable = "ss.test"
      var ckDF = spark.read.jdbc(ckUrl, ckTable, ckProperties)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
    • **show** 展示数据,类似于select * from test的功能

      1. [ckDF.show](http://ckDF.show) 默认展示前20个记录
      2. ckDF.show(3) 指定展示记录数
      3. ckDF.show(false) 是否展示前20个
      4. ckDF.show(3, 0) 截取记录数
    • **ckDF.collect** 方法会将 ckDF中的所有数据都获取到,并返回一个Array对象

    • ckDF.collectAsList 功能和collect类似,只不过将返回结构变成了List对象

    • **ckDF.describe**("ip_src").show(3) ****获取指定字段的统计信息

      scala> ckDF.describe("ip_src").show(3)
      +-------+------+                                                                
      |summary|ip_src|
      +-------+------+
      |  count|855035|
      |   mean|  null|
      | stddev|  null|
      +-------+------+
      only showing top 3 rows
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • first, head, take, takeAsList 获取若干行记录

      1. first获取第一行记录
      2. head获取第一行记录,head(n: Int)获取前n行记录
      3. take(n: Int)获取前n行数据
      4. takeAsList(n: Int)获取前n行数据,并以List的形式展现

      以Row或者Array[Row]的形式返回一行或多行数据。first和head功能相同。take和takeAsList方法会将获得到的数据返回到Driver端,所以,使用这两个方法时需要注意数据量,以免Driver发生OutOfMemoryError

  • 相关阅读:
    Android tinker升级之路分析
    实战详解Redis事务
    csdn关注打开文章,自动取关脚本(设置为仅粉丝查看的文章)
    C++11智能指针之02
    基于springboot实现车辆充电桩平台管理系统项目【项目源码+论文说明】计算机毕业设计
    【ArcGIS】重采样栅格像元匹配问题:不同空间分辨率栅格数据统一
    swagger使用教程——快速使用swagger
    计算机毕业设计hadoop+spark知识图谱课程推荐系统 课程预测系统 课程大数据 课程数据分析 课程大屏 mooc慕课推荐系统 大数据毕业设计
    亲测解决np.fromiter转换list的时候出现cannot create object arrays from iterator
    设计模式--模板方法&外观模式
  • 原文地址:https://blog.csdn.net/qq_35240081/article/details/136421437
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号