dra*_*nxo 5 apache-spark apache-spark-sql
在解析了一些jsons后,我有一个数组的单列DataFrame
scala> val jj =sqlContext.jsonFile("/home/aahu/jj2.json")
res68: org.apache.spark.sql.DataFrame = [r: array<bigint>]
scala> jj.first()
res69: org.apache.spark.sql.Row = [List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)]
Run Code Online (Sandbox Code Playgroud)
我想把每一行分成几行.怎么样?
编辑:
原始的json文件:
{"r": [0,1,2,3,4,5,6,7,8,9]}
{"r": [0,1,2,3,4,5,6,7,8,9]}
Run Code Online (Sandbox Code Playgroud)
我想要一个20行的RDD或DataFrame.
我不能简单地在这里使用flatMap - 我不确定spark中的相应命令是什么:
scala> jj.flatMap(r => r)
<console>:22: error: type mismatch;
found : org.apache.spark.sql.Row
required: TraversableOnce[?]
jj.flatMap(r => r)
Run Code Online (Sandbox Code Playgroud)
小智 4
您可以使用它DataFrame.explode来实现您的愿望。下面是我在 Spark-Shell 中尝试使用示例 json 数据进行的操作。
import scala.collection.mutable.ArrayBuffer
val jj1 = jj.explode("r", "r1") {list : ArrayBuffer[Long] => list.toList }
val jj2 = jj1.select($"r1")
jj2.collect
Run Code Online (Sandbox Code Playgroud)
您可以参考API文档来了解更多DataFrame.explode
| 归档时间: |
|
| 查看次数: |
7939 次 |
| 最近记录: |