美文网首页
spark广播变量

spark广播变量

作者: 君子慎独焉 | 来源:发表于2018-03-14 07:25 被阅读0次
package com.everdata.spark;


import java.io.IOException;
import java.sql.Array;
import java.sql.Connection;
import java.sql.Statement;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.MapFunction;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import org.apache.spark.broadcast.Broadcast;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import scala.Tuple2;
import scala.reflect.ClassTag;





public class AppearOne {

    //private static CanReportRequireConfigBean configBean ;
    private static Long lastTimeMiles = new Date().getTime() - 10 * 60 * 1000;
    
    private static String[] global_args ;
    
    public static void main(String[] args) {
        //读取json配置
        //generateConfig(args[0]);
        global_args = args;
        
        /*if(StringUtils.isNotEmpty(args[1])) {
            lastTimeMiles = DateUtil.parseDate(args[0].trim(), DateUtil.COMPACT_MINUTE_FORMAT).getTime();
            System.out.println(lastTimeMiles +":"+ args[0]);
        }*/
        
        SparkSession spark = SparkSession
                  .builder()
                  .appName("AppearOne")
                  .master("local[1]")
                  .config("spark.sql.parquet.binaryAsString", "true")
                  .getOrCreate();
        System.out.println("=========="+args[0]);
        ClassTag<String> tag = scala.reflect.ClassTag$.MODULE$.apply(String.class);
        Broadcast<String> s=spark.sparkContext().broadcast(args[0], tag);
        Dataset<Row> parquetFileDF = spark.read().parquet("d://xxx.parquet");
        final Dataset<String> baseDS=parquetFileDF.map(new MapFunction<Row,String>(){
            private static final long serialVersionUID = 1L;
            @Override
            public String call(Row value) throws Exception {
                return value.getLong(0)+"";
            }
        },Encoders.STRING());
        System.out.println("==================="+baseDS.count());
        baseDS.javaRDD().foreach(new VoidFunction<String>() {
            private static final long serialVersionUID = 1L;
            @Override
            public void call(String line) throws Exception {
                System.out.println(line);
                System.out.println(s.getValue());
            }
        });
    }
}


相关文章

  • Spark-broadcast

    参见Spark相关--共享变量-广播变量-broadcast

  • spark广播变量

  • Spark广播变量

    原文链接

  • Spark—广播变量

    广播变量 Spark有两种共享变量——累加器、广播变量。广播变量可以让程序高效地向所有工作节点发送一个较大的只读值...

  • spark广播变量

    广播变量的好处:如果你的算子函数中,使用到了特别大的数据,那么,这个时候,推荐将该数据进行广播。这样的话,就不至于...

  • Spark的广播变量机制

    Spark广播变量 什么是广播变量? 在同一个Execute共享同一份计算逻辑的变量 广播变量使用场景 我现在要在...

  • spark使用广播变量

  • Spark 之广播变量

    1. Background Spark 中有两种共享变量,其中一个是累加器,另一个是广播变量。前者解决了 Spar...

  • Spark广播变量应用

    一、广播变量 1、广播变量的优点 不需要每个task带上一份变量副本,而是变成每个节点的executor存一份副本...

  • Spark之广播变量

    什么是广播变量 广播变量:分布式共享只读变量。广播变量用来高效分发较大的对象。向所有工作节点发送一个较大的只读值,...

网友评论

      本文标题:spark广播变量

      本文链接:https://www.haomeiwen.com/subject/frgafftx.html