【问题标题】:Scala Spark read last row under specific column onlyScala Spark 仅读取特定列下的最后一行
【发布时间】:2019-05-06 19:37:26
【问题描述】:

如何修改以下代码以仅获取表中的最后一行,特别是 key 列下的值?原因是,它是一个巨大的表,我需要最后一行,特别是键值,才能知道它到目前为止加载了多少。我不关心还有什么其他内容。

第 1 行:

val df = spark.sqlContext.read.format("datasource").option("project", "character").option("apiKey", "xx").option("type", "tables").option("batchSize", "10000").option("database", "humans").option("table", "healthGamma").option("inferSchema", "true").option("inferSchemaLimit", "1").load()

第 2 行:

df.createTempView("tables")

第 3 行:

spark.sqlContext.sql("select * from tables").repartition(1).write.option("header","true").parquet("lifes_remaining")

【问题讨论】:

  • 什么是键列类型?您只想要按升序排列的最后一个键吗?
  • @LiorChaga 它是值,整数。

标签: sql scala apache-spark pyspark


【解决方案1】:

您可以像这样在 Dataframe 中使用 orderBy,希望对您有所帮助:

df.orderBy($"value".desc).show(1) 

【讨论】:

  • 在第 2 行之后添加它不会影响第 2 行的结果。您可以这样做:df.orderBy($"value".desc).limit(1).write.option("header","true").parquet("lifes_remaining")
  • @LiorChaga 为什么我们按value 而不是key 列订购。还有其他值列也有int
  • 只需复制粘贴的@YashShah 回复。是的,它应该通过键列
  • 我只是举了一个例子,写“value”你应该使用“key”
  • @YashShah 列表已经在数据库中排序,我只需要key 列中最后一行的值。我不想遍历表,我希望它只给出最后一行的值,这可能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2019-02-03
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
相关资源
最近更新 更多