动态创建schema加载DataFrame

首页 » Spark » 动态创建schema加载DataFrame

动态构建DataFrame中的元数据
创建row顺序要和动态创建schema的顺序一致

package spark;

import java.util.Arrays;
import java.util.List;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;

public class dongtai {
public static void main(String[] args) {
 SparkConf conf = new SparkConf();
 conf.setMaster("local").setAppName("rdddongtai");
 JavaSparkContext sc = new JavaSparkContext(conf);
 SQLContext sqlcontext = new SQLContext(sc);
 JavaRDD<String>linerdd = sc.textFile("person.txt");
 //转换成Row类型的RDD
 JavaRDD<Row> rowrdd=linerdd.map(new Function<String, Row>() {

  @Override
  public Row call(String arg0) throws Exception {
   // TODO Auto-generated method stub
   return RowFactory.create(
     arg0.split(",")[0],
     arg0.split(",")[1],
     Integer.valueOf(arg0.split(",")[2]));
  }
 });
 //动态构建DataFrame中的元数据
 //创建row顺序要和动态创建schema的顺序一致
 List<StructField>aslist=Arrays.asList(
   DataTypes.createStructField("id",DataTypes.StringType,true),
   DataTypes.createStructField("name",DataTypes.StringType,true),
   DataTypes.createStructField("age",DataTypes.IntegerType,true)
   );
 StructType schema=DataTypes.createStructType(aslist);
 DataFrame df = sqlcontext.createDataFrame(rowrdd,schema);
 
 df.show();
 sc.stop();
}
}
分享到:
赞(0) 打赏

评论 8

评论前必须登录!

 

  1. #1

    我也是学计算机的

    我也是渣渣8个月前 (03-29)
  2. #2

    给你点赞

    中国加油小子8个月前 (03-29)
  3. #3

    我也是渣渣8个月前 (03-29)
  4. #4

    挺明白的

    你哥8个月前 (03-29)
  5. #5

    最好再详细点

    中国加油小子8个月前 (03-29)
  6. #6

    可以

    沥青6个月前 (05-26)
  7. #7

    good厉害了

    努力6个月前 (05-26)
  8. #8

    给你点赞

    笨鸟先飞6个月前 (05-26)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00