簡體   English   中英

Apache Spark:按名稱獲取Row的元素

[英]Apache Spark: get elements of Row by name

在Apache Spark的DataFrame對象中(我正在使用Scala接口),如果我正在迭代其Row對象,有沒有辦法按名稱提取值? 我可以看到如何做一些非常尷尬的事情:

def foo(r: Row) = {
  val ix = (0 until r.schema.length).map( i => r.schema(i).name -> i).toMap
  val field1 = r.getString(ix("field1"))
  val field2 = r.getLong(ix("field2"))
  ...
}
dataframe.map(foo)

我認為必須有一個更好的方法 - 這是非常冗長的,它需要創建這個額外的結構,它還需要明確地知道類型,如果不正確,將產生運行時異常而不是編譯時錯誤。

您可以使用org.apache.spark.sql.RowgetAs

r.getAs("field1")
r.getAs("field2")

了解有關getAs的更多信息(java.lang.String fieldName)

目前在Scala API中不支持此功能。 你最接近的是這個JIRA標題為“支持將DataFrames轉換為鍵入的RDD”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM