dataset[seq[(string,string,string)]]到dataset[(string,string,string)]

gkl3eglg  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(399)

我有一张Cassandratable,结构如下:

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

我想插入数据在同一SparkCassandra连接器。
我的spark数据集属于 Dataset[Seq[(String, String, String)]] .
我想把它转换成 Dataset[(String, String, String)] 以便可以使用 .rdd.saveToCassandra 应用程序编程接口。
请协助转换或有没有直接的方法使用相同的 Dataset[Seq[(String, String, String)]] .

bq9c1y66

bq9c1y661#

呼叫 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]

相关问题