相关疑难解决方法(0)

在DataFrame上定义自定义方法的最佳方法是什么?

我需要在DataFrame上定义自定义方法.有什么更好的方法呢?解决方案应该是可扩展的,因为我打算定义大量的自定义方法.

我当前的方法是MyClass使用DataFrameas参数创建一个类(比如说),在其中定义我的自定义方法(比如说customMethod)并定义一个转换DataFrame为的隐式方法MyClass.

implicit def dataFrametoMyClass(df: DataFrame): MyClass = new MyClass(df)
Run Code Online (Sandbox Code Playgroud)

因此,我可以打电话:

dataFrame.customMethod()
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?公开征求意见.

scala apache-spark apache-spark-sql

10
推荐指数
2
解决办法
2859
查看次数

将嵌套列添加到Spark DataFrame

如何在任何嵌套级别上向结构添加或替换字段?

这个输入:

val rdd = sc.parallelize(Seq(
  """{"a": {"xX": 1,"XX": 2},"b": {"z": 0}}""",
  """{"a": {"xX": 3},"b": {"z": 0}}""",
  """{"a": {"XX": 3},"b": {"z": 0}}""",
  """{"a": {"xx": 4},"b": {"z": 0}}"""))
var df = sqlContext.read.json(rdd)
Run Code Online (Sandbox Code Playgroud)

产生以下模式:

root
 |-- a: struct (nullable = true)
 |    |-- XX: long (nullable = true)
 |    |-- xX: long (nullable = true)
 |    |-- xx: long (nullable = true)
 |-- b: struct (nullable = true)
 |    |-- z: long (nullable = true)
Run Code Online (Sandbox Code Playgroud)

然后我可以这样做:

import org.apache.spark.sql.functions._
val overlappingNames = Seq(col("a.xx"), …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql spark-dataframe

9
推荐指数
1
解决办法
3683
查看次数

优雅的Json在Spark中展平

我在spark中有以下数据框:

val test = sqlContext.read.json(path = "/path/to/jsonfiles/*")  
test.printSchema
root
 |-- properties: struct (nullable = true)
 |    |-- prop_1: string (nullable = true)
 |    |-- prop_2: string (nullable = true)
 |    |-- prop_3: boolean (nullable = true)
 |    |-- prop_4: long (nullable = true)
...
Run Code Online (Sandbox Code Playgroud)

我想做的是压扁这个数据帧,使其prop_1 ... prop_n存在于顶层.即

test.printSchema
root
|-- prop_1: string (nullable = true)
|-- prop_2: string (nullable = true)
|-- prop_3: boolean (nullable = true)
|-- prop_4: long (nullable = true)
...
Run Code Online (Sandbox Code Playgroud)

有几种类似问题的解决方案.我能找到的最好的就是这里.但是,只有properties …

json scala apache-spark apache-spark-sql

8
推荐指数
1
解决办法
5008
查看次数

使用PySpark删除Dataframe的嵌套列

我正在尝试使用pyspark在Spark数据框中删除一些嵌套的列。我为Scala找到了这个功能,它似乎完全可以满足我的要求,但是我对Scala并不熟悉,也不知道如何用Python编写它。

/sf/answers/2796066871/

我真的很感谢您的帮助。

谢谢,

dataframe apache-spark pyspark

5
推荐指数
3
解决办法
1787
查看次数