scala - 数据集[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.saveToCassandra
API 将其插入表中。
请协助转换或是否有直接使用相同的方法Dataset[Seq[(String, String, String)]]
。
解决方案
打电话flatMap
,Dataset[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]
推荐阅读
- typo3 - Flexform 中的 TYPO3 FAL
- xslt - XSLT - 过滤掉非 x 引用的元素
- dataframe - Pyspark 列值在创建 DataFrame 时自动移动
- flutter - Flutter Web 禁用鼠标上下文菜单小部件
- python - 使用 python 进行网页解析。无法获取整个页面
- git - 同步两个已经发散的分支
- java - AES:在 Java 中使用 ECB 模式加密
- typescript - 如何在 Vue3/Ts 中使用 vue-unit-test + jest
- angular - 如何将自定义主题添加到 Ionic 5 应用程序?
- c++ - 为什么我不能通过 Eclipse CDT4 打开 Qt5 应用程序?