spark中UDF,从文件中读取数据(两种方式),然后输出【java版纯代码】

package com.bjsxt;


import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaRDD;
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.SQLContext;
/**
 * 读取json格式的文件创建DataFrame
 * 
 * 注意 :json文件中不能嵌套json格式的内容
 * 
 * 1.读取json格式两种方式
 * 2.df.show默认显示前20行,使用df.show(行数)显示多行
 * 3.df.javaRDD/(scala df.rdd) 将DataFrame转换成RDD
 * 4.df.printSchema()显示DataFrame中的Schema信息
 * 5.dataFram自带的API 操作DataFrame ,用的少
 * 6.想使用sql查询,首先要将DataFrame注册成临时表:df.registerTempTable("jtable"),再使用sql,怎么使用sql?sqlContext.sql("sql语句")
 * 7.不能读取嵌套的json文件
 * 8.df加载过来之后将列按照ascii排序了
 * @author root
 *
 */

public class JavaRdd {
    public static void main(String[] args) {
        SparkConf conf=new SparkConf().setAppName("test").setMaster("local");
        SparkContext sc=new SparkContext(conf);
        SQLContext SQLContext=new SQLContext(sc);
        DataFrame df = SQLContext.read().format("json").load("./json");
        JavaRDD<Row> javaRDD = df.javaRDD();
        df.show();
        df.printSchema();
        System.out.println("kjjfljdlkgdfjlkdjgsfkjggjfdgkjfd");
        javaRDD.map(new Function<Row, String>() {

            @Override
            public String call(Row row) throws Exception {
                System.out.println("row="+row.get(0));
                System.out.println("000000000000000000000000000000000");
                System.out.println("row="+row.getAs("name"));
                System.out.println("9999999999999999999999999999999999999999");
                System.out.println("row="+row.getAs("age"));

                
                return "xxx";
            }
        }).count();
    }
}

猜你喜欢

转载自blog.csdn.net/wyqwilliam/article/details/81202973