Jdbc 如何使用SparkSession选择postgre表的子集,但不加载完整表?

Jdbc 如何使用SparkSession选择postgre表的子集,但不加载完整表?,jdbc,apache-spark,dataframe,Jdbc,Apache Spark,Dataframe,当我使用SparkSession从postgre表获取数据时,我必须首先将表加载到DataFrame中,然后通过DataFrame API查询一些数据: val spark = SparkSession.builder().getOrCreate() val jdbcDF = spark.read .format("jdbc") .option("url", "jdbc:postgresql://192.168.xx.xx:5432/sparktest") .option("dbta

当我使用SparkSession从postgre表获取数据时,我必须首先将表加载到DataFrame中,然后通过DataFrame API查询一些数据:

val spark = SparkSession.builder().getOrCreate()
val jdbcDF = spark.read
  .format("jdbc")
  .option("url", "jdbc:postgresql://192.168.xx.xx:5432/sparktest")
  .option("dbtable", "public.ml")
  .option("user", "dxy")
  .option("password", "123456")
  .load()

println(jdbcDF.count())

val sqlDF = jdbcDF.select("f1", "f2")
sqlDF.show()
语句“println(jdbcDF.count())”返回表ml的总计数,但如果表ml很大,数据帧jdbcDF也很大吗

我只是想从表ml中查询并获取一些特定的数据,也就是说,我想将表ml中的部分数据加载到DataFrame jdbcDF中,这样我就可以节省内存了

谁能帮我举个例子吗


多谢各位

您可以使用like
limit()


您可以使用like
limit()


但是,我似乎是在本地数据框中查询特定数据,而不是在postgre中,对吗?你能通过SparkSeision在postgre中进行条件查询吗?我不太清楚内部情况。如果记得在使用极限后看到显著的加速。我猜它不会读取整个数据库。但是,我似乎在本地数据帧中查询特定数据,而不是在postgre中,对吗?你能通过SparkSeision在postgre中进行条件查询吗?我不太清楚内部情况。如果记得在使用极限后看到显著的加速。我猜它不会读取整个数据库。
val jdbcDF = spark.read
  .format("jdbc")
  .option("url", "jdbc:postgresql://192.168.xx.xx:5432/sparktest")
  .option("dbtable", "public.ml")
  .option("user", "dxy")
  .option("password", "123456")
  .limit(10)