RDD、DataSet、DataFrame之间的转换

  • Dataset转为DataFrame
    必须要导入隐式转换否则会报错(隐式转换在我上一篇中有讲到)
    第一种情况:若数据字段不多的话可以直接利用toDF()可以直接转换为DataFrame,如下:
    import spark.implicits._
    val ds: Dataset[String] = spark.read.textFile("hdfs://192.192.192.24/tmp/tb_order/")
    ds.map(x => x.split("\\|")).map(x => (x(0),x(1),x(2),x(3),x(4))).toDF("aa","ss","dd","rr","hh").show()

结果如下:
在这里插入图片描述
第二种情况,如果你的数据字段较多的情况下,可以使用样例类的方法(因为在元组中字段最多只能有22个,超过22个就不能使用上面的方法)进行转换,如下,我这个有60个字段:

 import spark.implicits._
    val ds_ls: Dataset[String] = spark.read.textFile("hdfs://192.192.192.24/inceptor1/user/hive/warehouse/ods.db/hive/mz_rkk_ls/")
    //将ds_ls转换为dataframe
    val frame_ls: DataFrame = ds_ls.map(x => x.split("\\|")).map(x => mz_rkk_ls(x(0), x(1), x(2), x(3), x(4), x(5), x(6), x(7), x(8), x(9), x(10), x(11), x(12), x(13), x(14), x(15), x(16), x(17), x(18), x(19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值