项目名称:
convertpytohive.scala
功能:
将已经打过标签的数据存储到一个hive表中,partition字段值为category_param,category值为文件中类别值,param为要传进去的值。
开发中遇到问题:
在rdd中不能给外部变量赋值
var contentstr="default" // 1.spark从hdfs中读取多个文件 val spark = sparkConfig.getSparkSessionWithHive("convertto") val filedata = spark.read.text(hdfspath) //2.将filedata转换为rdd(category,url,label) val originaldata = filedata.rdd.map { x => contentstr = x.getString(0).indexOf(",") } println(contentstr)// contentstr将输出仍为default
如果rdd格式为rdd[Row],则获取rdd中的值时使用x.getString(0)这种格式;如果rdd为rdd[String,…],则用x._1这种格式,注意,x._1必须是从1开始,元组是从1开始的。
rdd.map(x => x.getString(0)) rdd.map(x => (x._1,x._2))
打印rdd中的数据
println("打印rdd") originaldata.collect().foreach(println)
- Row表示rdd中的每一行数据,跟table没有关系
- 编程过程中,每一个类在写的时候要写“提纲”,很重要!