首页 > 解决方案 > 数据集[Seq[(String, String, String)]] 到数据集[(String, String, String)]

问题描述

我有一个具有以下结构的 Cassandra 表:

CREATE TABLE myKeyspace.myTable (
  rowkey text,
  columnname text,
  columnvalue text,
  PRIMARY KEY (rowkey, columnname)
  )

我希望使用 Spark Cassandra 连接器插入数据。

我的 Spark 数据集类型为Dataset[Seq[(String, String, String)]].

我想将其转换为,Dataset[(String, String, String)]以便可以使用.rdd.saveToCassandraAPI 将其插入表中。

请协助转换或是否有直接使用相同的方法Dataset[Seq[(String, String, String)]]

标签: scalaapache-sparkdataset

解决方案


打电话flatMapDataset[Seq[(String, String, String)]]检查下面&如果不工作请告诉我。

scala> dds
res124: org.apache.spark.sql.Dataset[Seq[(String, String, String)]] = [value: array<struct<_1:string,_2:string,_3:string>>]

scala> dds.printSchema
root
 |-- value: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- _1: string (nullable = true)
 |    |    |-- _2: string (nullable = true)
 |    |    |-- _3: string (nullable = true)


scala> dds.flatMap(d => d)
res126: org.apache.spark.sql.Dataset[(String, String, String)] = [_1: string, _2: string ... 1 more field]


推荐阅读