【Hadoop】在spark读取clickhouse中数据

  • 读取clickhouse数据库数据

    scala 复制代码
    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)
  • **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 复制代码
    scala> ckDF.describe("ip_src").show(3)
    +-------+------+                                                                
    |summary|ip_src|
    +-------+------+
    |  count|855035|
    |   mean|  null|
    | stddev|  null|
    +-------+------+
    only showing top 3 rows
  • 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]的形式返回一行或多行数据。firsthead功能相同。taketakeAsList方法会将获得到的数据返回到Driver端,所以,使用这两个方法时需要注意数据量,以免Driver发生OutOfMemoryError

相关推荐
B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
PersistJiao5 小时前
在 Spark RDD 中,sortBy 和 top 算子的各自适用场景
大数据·spark·top·sortby
Yz98765 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
lzhlizihang5 小时前
python如何使用spark操作hive
hive·python·spark
武子康5 小时前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康5 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
Mephisto.java5 小时前
【大数据学习 | Spark】Spark的改变分区的算子
大数据·elasticsearch·oracle·spark·kafka·memcache
zhixingheyi_tian11 小时前
Spark 之 Aggregate
大数据·分布式·spark
PersistJiao11 小时前
Spark 分布式计算中网络传输和序列化的关系(一)
大数据·网络·spark
爱上口袋的天空14 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse