Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala ApacheSpark:按名称获取行的元素_Scala_Apache Spark_Schema_Dataframe - Fatal编程技术网

Scala ApacheSpark:按名称获取行的元素

Scala ApacheSpark:按名称获取行的元素,scala,apache-spark,schema,dataframe,Scala,Apache Spark,Schema,Dataframe,在apachespark中的DataFrame对象中(我使用的是Scala接口),如果我在其行对象上进行迭代,有没有办法按名称提取值?我知道如何做一些非常尴尬的事情: 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.getLon

在apachespark中的
DataFrame
对象中(我使用的是Scala接口),如果我在其
对象上进行迭代,有没有办法按名称提取值?我知道如何做一些非常尴尬的事情:

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)

我想一定有更好的方法-这相当冗长,需要创建这个额外的结构,还需要明确知道类型,如果不正确,将产生运行时异常而不是编译时错误。

Scala API目前不支持这种方法。最接近的是您可以使用
org.apache.spark.sql.Row

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

了解更多关于

我认为应该是r.getAs[Any](“fieldName”)