Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 折叠Spark数据帧_Scala_Apache Spark_Dataframe_Apache Spark Sql_Pivot - Fatal编程技术网

Scala 折叠Spark数据帧

Scala 折叠Spark数据帧,scala,apache-spark,dataframe,apache-spark-sql,pivot,Scala,Apache Spark,Dataframe,Apache Spark Sql,Pivot,我正在将Spark与Scala一起使用。Spark版本1.5,我正在尝试将具有名称-值组合的输入数据帧转换为一个新的数据帧,在该数据帧中,所有名称都将转换为列,值作为行 I/p数据帧: ID名称值 美国1国 美国2个国家 2纽约州 英国三国 四国印度 4州MH 美国5国 5新泽西州 哈德逊郡5号 转置数据帧 ID国家/州/县 1 US NULL NULL 2美国纽约州零 3英国空 4印度MH空 5美国新泽西州哈德逊 在这个用例中,pivot似乎会有所帮助,但spark 1.5.x版本不支

我正在将Spark与Scala一起使用。Spark版本1.5,我正在尝试将具有名称-值组合的输入数据帧转换为一个新的数据帧,在该数据帧中,所有名称都将转换为列,值作为行

I/p数据帧:

ID名称值
美国1国
美国2个国家
2纽约州
英国三国
四国印度
4州MH
美国5国
5新泽西州
哈德逊郡5号

转置数据帧

ID国家/州/县
1 US NULL NULL
2美国纽约州零
3英国空
4印度MH空
5美国新泽西州哈德逊

在这个用例中,pivot似乎会有所帮助,但spark 1.5.x版本不支持pivot


有任何提示/帮助吗?

这是一个非常难看的数据,但您始终可以筛选并加入:

val names = Seq("Country", "State", "County")

names.map(name => 
  df.where($"Name" === name).select($"ID", $"Value".alias("name"))
).reduce((df1, df2) => df1.join(df2, Seq("ID"), "leftouter"))
map
创建一个包含三个
DataFrames
的列表,其中每个表只包含一个名称的记录。接下来,我们简单地使用左外连接减少这个列表。因此,把所有这些放在一起,你会得到如下结果:

(left-outer-join
  (left-outer-join 
    (where df (=== name "Country"))
    (where df (=== name "State")))
  (where df (=== name "County")))
注意:如果将Spark>=1.6与Python或Scala一起使用,或将Spark>=2.0与R一起使用,只需先将pivot与
一起使用