- 读取clickhouse数据库数据
importscala.collection.mutable.ArrayBufferimportjava.util.Propertiesimportorg.apache.spark.sql.SaveModeimportorg.apache.spark.sql.SparkSessiondef 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> ckDF.describe("ip_src").show(3)+-------+------+|summary|ip_src|+-------+------+| count|855035|| mean|null|| stddev|null|+-------+------+only showing top 3 rowsfirst, 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>
本文转载自: https://blog.csdn.net/qq_35240081/article/details/136421437
版权归原作者 音乐学家方大刚 所有, 如有侵权,请联系我们删除。
版权归原作者 音乐学家方大刚 所有, 如有侵权,请联系我们删除。