【问题标题】:How to store a result of spark dataframe in to a scala val如何将火花数据帧的结果存储到scala val
【发布时间】:2020-04-03 03:36:50
【问题描述】:

我有一个数据框。我的 Hive 查询的结果总是只有一条记录,只有一列。有时它产生null,有时它产生0,有时它产生一个数字(bigInt)

我的问题是我想将这个单个值的结果存储到 scala 中的 val 中。我该怎么做呢

scala> val hc = new HiveContext(sc)
hc: org.apache.spark.sql.hive.HiveContext = org.apache.spark.sql.hive.HiveContext@19e15d63

scala> val df = hc.sql("""select MAX(seq_num) as seq_num from omega.tx_records""")
df: org.apache.spark.sql.DataFrame = [seq_num: bigint]

scala> df.show
+-------+
|seq_num|
+-------+
|   null|
+-------+

我想将 df 的输出存储到一个字符串中。我该怎么做?

我尝试了以下方法。他们给了Array。

scala> df.collect
res2: Array[org.apache.spark.sql.Row] = Array([null])

scala> df.take(1)
res3: Array[org.apache.spark.sql.Row] = Array([null])

scala> df.head(1)
res4: Array[org.apache.spark.sql.Row] = Array([null])

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    需要提取array elementmkstring生成字符串数据!

    val df=spark.sql("select max(seq_num)seq_num from (select 1 seq_num union all select null seq_num)e")
    
    df.collect().map(x => x(0)).mkString
    String = 1
    

    【讨论】:

      【解决方案2】:

      如果你 100% 确定,那么你可以计算

      df.collect.head.getAs[String]("seq_num")
      

      得到你想要的。

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 2016-05-01
        • 2018-01-19
        • 2020-08-11
        • 2016-12-16
        • 2021-05-29
        • 2018-10-27
        • 2018-11-08
        • 2019-02-27
        相关资源
        最近更新 更多