Spark scala中基于json对象参数的调用方法?

我有像下面这样的 JSON 对象..

{"name":"method1","parameter1":"P1","parameter2":"P2","parameter3":"P3","parameter4":"P4"}

{"name":"method2","parameter1":"P1","parameter2":"P2","parameter3":"P3","parameter4":"P4","parameter5":"P5","parameter6":"P6"}

我有不同的功能和不同的逻辑,比如波纹管

def method1(P1:String, P2:Int, P3:String, P4:String)={
  println(p1)
  println(p2)
  println(p3)
  println(p4)
} 

def method2(P1:String, P2:Int, P3:String, P4:String,P5:String,P6:String)={
  println(p1)
  println(p2)
  println(p3)
  println(p4)
  println(p6)
  println(p5)
} 

使用这个对象我必须调用我的方法。

例如,我的 JSON 对象包含第一个参数 method1,然后我必须method1(P1: String, P2: Int, P3: String, P4: String)使用铰孔属性作为参数调用第一个函数(如)。

基于我的 JSON 第一个参数,我用剩余的参数调用了这个函数。请让我知道我怎样才能做到这一点?

拉梅什·马哈詹

这是使用dataframe.

您有一个有效的json格式,可以通过spark读取dataframe

val df = sqlContext.read.json("path to the json file")

这应该给你dataframe

+-------+----------+----------+----------+----------+----------+----------+
|name   |parameter1|parameter2|parameter3|parameter4|parameter5|parameter6|
+-------+----------+----------+----------+----------+----------+----------+
|method1|P1        |P2        |P3        |P4        |null      |null      |
|method2|P1        |P2        |P3        |P4        |P5        |P6        |
+-------+----------+----------+----------+----------+----------+----------+

现在我通过将原始数据类型更改column打印更改为传递的字符串连接修改您的两个函数

import org.apache.spark.sql.Column
import org.apache.spark.sql.functions._
def method1(P1:Column, P2:Column, P3:Column, P4:Column)={
  concat_ws(",", P1, P2, P3, P4)
}

def method2(P1:Column, P2:Column, P3:Column, P4:Column,P5:Column,P6:Column)={
  concat_ws(",", P1, P2, P3, P4, P5, P6)
}

您可以name使用when以下函数根据上填充的值调用这两种方法

df.withColumn("methodCalling", when($"name" === "method1", method1($"parameter1",$"parameter2",$"parameter3",$"parameter4"))
  .otherwise(when($"name" === "method2", method2($"parameter1",$"parameter2",$"parameter3",$"parameter4",$"parameter5",$"parameter6"))))
  .show(false)

这应该给你

+-------+----------+----------+----------+----------+----------+----------+-----------------+
|name   |parameter1|parameter2|parameter3|parameter4|parameter5|parameter6|methodCalling    |
+-------+----------+----------+----------+----------+----------+----------+-----------------+
|method1|P1        |P2        |P3        |P4        |null      |null      |P1,P2,P3,P4      |
|method2|P1        |P2        |P3        |P4        |P5        |P6        |P1,P2,P3,P4,P5,P6|
+-------+----------+----------+----------+----------+----------+----------+-----------------+

我希望答案对您有所帮助,并且应该让您了解应该如何继续进行的总体思路。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

理解 Spark Scala 的基本方法调用

来自分类Dev

错误:方法withColumn的参数不足:Scala spark

来自分类Dev

Spark Scala方法组合

来自分类Dev

在Spark Scala中旋转

来自分类Dev

在Spark Scala中合并

来自分类Dev

Spark Scala中的映射

来自分类Dev

Spark中的mapreduce参数

来自分类Dev

在Scala Spark中找不到reduceByKey方法

来自分类Dev

Apache Spark中的递归方法调用

来自分类Dev

如何基于Spark Scala中的条件获取结果

来自分类Dev

基于Scala中的关键列合并Spark数据帧行

来自分类Dev

在Spark中获取嵌套的json对象

来自分类Dev

使用Scala将JSON对象更改为Spark中的JSON列表

来自分类Dev

在Scala / Spark中将JSON结构解析为JSON对象

来自分类Dev

在Spark中嵌套JSON

来自分类Dev

Scala Spark-调用createDataFrame时获取重载方法

来自分类Dev

Spark Scala 通过方法调用更新数据帧

来自分类Dev

Spark - 从 Scala 代码调用 Java 方法时出现 UnsupportedOperationException

来自分类Dev

Spark-使用参数从Java调用Spark jar

来自分类Dev

使用Spark清理JSON对象

来自分类Dev

在Scala Spark中未调用RDD的Map函数

来自分类Dev

在Scala Spark中嵌套RDD

来自分类Dev

Scala / Spark中的比例矩阵

来自分类Dev

Spark(Scala)中的数据扩展

来自分类Dev

在Scala Spark中并置UDF

来自分类Dev

Spark Scala中的数据转换

来自分类Dev

Spark Scala中的aggregateByKey的语法

来自分类Dev

在Spark Scala中定义UDF

来自分类Dev

替换 spark scala 中的元素