【问题标题】:Dataset[Seq[(String, String, String)]] to Dataset[(String, String, String)]数据集[Seq[(String, String, String)]] 到数据集[(String, String, String)]
【发布时间】:2020-05-23 16:39:52
【问题描述】:

我有一个 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.saveToCassandra API 将其插入到表中。

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

【问题讨论】:

  • 能否添加数据集的printSchema[Seq([String,String,String])]
  • 我不确定是否投反对票。我需要一些细节添加评论。
  • 你能检查下面的答案,看看它是否有帮助?

标签: scala apache-spark dataset


【解决方案1】:

Dataset[Seq[(String, String, String)]] 上致电flatMap,请在下方查看&如果不起作用,请告诉我。

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]

【讨论】:

  • 完成,谢谢。如果它有助于投票,你也可以请检查你的其他问题吗?
  • 检查了另一个问题,我编辑了问题,解决方案不适用于 Dataset[mutable.Iterable[...]]
  • 那个问题和这个问题都一样?
猜你喜欢
  • 1970-01-01
  • 2022-08-23
  • 2022-07-16
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多