spark整理数据放入mysql

spark我还是新手,所有对他不是特别熟悉,但是在整理完数据之后,我需要生成表并且放入我想要的数据,所以发现了两种不同的方式。

1.生成List<Row>

2.JavaRDD<Row>

第一种方式:(连接到我上一篇文章中的生成的Map<Integer,List>)

List<Row> rows = new ArrayList<>();
Iterator<Entry<Integer, List>> itMap = map.entrySet().iterator();
while(itMap.hasNext()){//遍历map
    Entry<Integer, List> entry = itMap.next();
    int key = entry.getKey();
    List list2 = entry.getValue();
    for(int i = 0;i<list2.size();i++){//循环list
        rows.add(RowFactory.create(key,list2.get(i), list2.get(i+1), list2.get(i+2),
        new Timestamp(new java.util.Date().getTime())));//添加需要的字段内容
        i = 3;
    }
}
StructType schema = createSchema();//创建表结构
Dataset<Row> df_target = sparkSession.createDataFrame(rows, schema);
df_target.show();//打印内容
df_target.write().mode(SaveMode.Append).jdbc(properties.getProperty("url_jdbc_master"),"analyze_point", this.properties);
//连接数据库,创建表,添加内容

创建表结构(表中的字段类型与所添加的内容字段类型必须一致):

StructType createSchema() {
StructType ret = new StructType()//表的列名及表的字段类型,字段注释
    .add(new StructField("orgId",DataTypes.IntegerType,true,Metadata.empty()).withComment("orgId"))
    .add(new StructField("morePhoneLogin", DataTypes.IntegerType, true, Metadata.empty()).withComment("xx"))
    .add(new StructField("openAccountMore", DataTypes.IntegerType, true, Metadata.empty()).withComment("xx"))
    .add(new StructField("remoteLogin", DataTypes.IntegerType, true, Metadata.empty()).withComment("xx"))
    .add(new StructField("time", DataTypes.TimestampType, true, Metadata.empty()).withComment("时间"));
return ret;
}


第二种:(dsAccountCount :根据mysql语句从数据库中返回整理的数据,放入数据库中新表中 ,类型为DataSet<Row>

JavaRDD<Row> rdd_target= dsAccountCount.toJavaRDD().map(t2->{
    return RowFactory.create(t2.get(0),t2.get(1),t2.get(2),new Timestamp(new java.util.Date().getTime()));//根据下标来获取内容
});
StructType schema = createSchema();//上面已经贴出生成新表结构样式
Dataset<Row> df_target = sparkSession.createDataFrame(rdd_target, schema);
df_target.show();
df_target.write().mode(SaveMode.Append).jdbc(this.properties.getProperty(PropertyKeys.URL_JDBC_MASTER),"analyze_point_operator_login", this.properties);

发布了47 篇原创文章 · 获赞 10 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/fearlessnesszhang/article/details/80402521