如何解决将案例类动态映射到 RDD[Result]
我正在尝试将来自 Hbase 的一个列族的数据映射为 Dataframe,如下所示
SPLIT
我可以很好地为我试图为其提取数据的每个列族对 case 类进行硬编码。但我有超过 15 个列族,未来几天会添加更多列族。
所以,我想概括这部分,以便我可以从任何类中读取,并且字段被动态映射到案例类中的相应列。我将为每个列族声明一个案例类。
case class my_table1(rowKey: String,col1: String,col2: Sttring)
case class my_table2(rowKey: String,col11: String,col22: String,col33: String)
val hBaseRDD:[(ImmutableBytesWritable,Result)] = sc.newAPIHadoopRDD(conf,classOf[TableInputFormat],classOf[ImmutableBytesWritable],classOf[Result])
val hBaseRDDResult[Result] = hBaseRDD.map(t => t._2)
val df: DataFrame = hBaseRDDResult.map{ x =>
my_table1 (
Bytes.toString(x.getRow),Bytes.toString(x.getValue("cf1".getBytes,"col1".getBytes)),"col2".getBytes))
)
}.toDF
我目前使用的是 Spark 2.2.0、Scala 2.11
问题:
- 如何将案例类动态映射到 RDD[Result] ?
- 还有其他方法可以将列从 RDD[Result] 动态映射到数据帧吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。