如何在spark / scala中打印包含嵌套对象数组的镶木地板的各个元素?
MapView rosterMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_roster);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_roster);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
rosterMapView = (MapView) findViewById(R.id.roster_map_view);
rosterMapView.onCreate(savedInstanceState);
}
@Override
protected void onPause() {{
super.onPause();
rosterMapView.onPause();
}
具体来说,我希望能够遍历对象并打印出id,name和age ...然后路径中的每个项目。然后继续打印下一条记录并进行软化。假设我已经阅读了镶木地板文件并拥有数据框,我想做类似以下的事情(伪代码):
MapView
不确定以上是否是正确的方法,但它应该让你知道我想要做什么。
答案 0 :(得分:1)
val spark = SparkSession
.builder()
.master("local")
.appName("ParquetAppendMode")
.getOrCreate()
import spark.implicits._
val data1 = spark.read.json("/home/sakoirala/IdeaProjects/SparkSolutions/src/main/resources/explode.json")
val result = data1.withColumn("path", explode($"path"))
result.withColumn("x", result("path.x"))
.withColumn("y", result("path.y")).show()
输出:
+---+----+-------+-----------+----+----+
|age| id| name| path| x| y|
+---+----+-------+-----------+----+----+
| 25|1201| satish| [1.0,1.0]| 1.0| 1.0|
| 25|1201| satish| [2.0,2.0]| 2.0| 2.0|
| 28|1202|krishna|[1.23,2.12]|1.23|2.12|
| 28|1202|krishna|[1.23,2.12]|1.23|2.12|
+---+----+-------+-----------+----+----+
答案 1 :(得分:0)
您可以使用Dataframe API完全执行此操作;无需使用map
。
以下是通过投影您想要使用的字段轻松展平架构的方法:
val records = dataframe.select("id", "age", "path.x", "path.y")
然后,您可以使用show:
打印数据records.show()