How to load Spark Cassandra Connector in the shell?

前端 未结 6 1437
长情又很酷
长情又很酷 2020-12-07 16:16

I am trying to use Spark Cassandra Connector in Spark 1.1.0.

I have successfully built the jar file from the master branch on GitHub and have gotten the included dem

6条回答
  •  轮回少年
    2020-12-07 16:29

    Spark-Cassandra-Connector Complete Code in JAVA with Window-7,8,10 Usefull.

    import com.datastax.driver.core.Session;
    import com.datastax.spark.connector.cql.CassandraConnector;
    import com.google.common.base.Optional;
    import org.apache.spark.SparkConf;
    import org.apache.spark.api.java.JavaPairRDD;
    import org.apache.spark.api.java.JavaRDD;
    import org.apache.spark.api.java.JavaSparkContext;
    import org.apache.spark.api.java.function.FlatMapFunction;
    import org.apache.spark.api.java.function.Function;
    import org.apache.spark.api.java.function.Function2;
    import org.apache.spark.api.java.function.PairFlatMapFunction;
    import scala.Tuple2;
    import spark_conn.Spark_connection;
    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.text.MessageFormat;
    import java.util.*;
    import static com.datastax.spark.connector.CassandraJavaUtil.*;
    
    
    public class App implements Serializable
    {
        private transient SparkConf conf;
    
        private App(SparkConf conf) {
            this.conf = conf;
        }
    
        private void run() {
            JavaSparkContext sc = new JavaSparkContext(conf);
            generateData(sc);
            compute(sc);
            showResults(sc);
            sc.stop();
        }
    
        private void generateData(JavaSparkContext sc) {
        CassandraConnector connector =   CassandraConnector.apply(sc.getConf());
    
            // Prepare the schema
       try{ 
       Session session=connector.openSession();
       session.execute("DROP KEYSPACE IF EXISTS java_api");
       session.execute("CREATE KEYSPACE java_api WITH 
       replication = {'class': 'SimpleStrategy', 'replication_factor': 1}");
       session.execute("CREATE TABLE java_api.products 
       (id INT PRIMARY KEY, name TEXT, parents LIST)");
       session.execute("CREATE TABLE java_api.sales 
       (id UUID PRIMARY KEY,  product INT, price DECIMAL)");
       session.execute("CREATE TABLE java_api.summaries 
       (product INT PRIMARY KEY, summary DECIMAL)");
      }catch(Exception e){System.out.println(e);}
    
            // Prepare the products hierarchy
       List products = Arrays.asList(
       new Product(0, "All products", Collections.emptyList()),
                    new Product(1, "Product A", Arrays.asList(0)),
                    new Product(4, "Product A1", Arrays.asList(0, 1)),
                    new Product(5, "Product A2", Arrays.asList(0, 1)),
                    new Product(2, "Product B", Arrays.asList(0)),
                    new Product(6, "Product B1", Arrays.asList(0, 2)),
                    new Product(7, "Product B2", Arrays.asList(0, 2)),
                    new Product(3, "Product C", Arrays.asList(0)),
                    new Product(8, "Product C1", Arrays.asList(0, 3)),
                    new Product(9, "Product C2", Arrays.asList(0, 3))
        );
    
       JavaRDD productsRDD = sc.parallelize(products);
       javaFunctions(productsRDD, Product.class).
       saveToCassandra("java_api", "products");
    
       JavaRDD salesRDD = productsRDD.filter
       (new Function() {
                @Override
                public Boolean call(Product product) throws Exception {
                    return product.getParents().size() == 2;
                }
            }).flatMap(new FlatMapFunction() {
                @Override
                public Iterable call(Product product) throws Exception {
                    Random random = new Random();
                    List sales = new ArrayList<>(1000);
                    for (int i = 0; i < 1000; i++) {
                      sales.add(new Sale(UUID.randomUUID(), 
                     product.getId(), BigDecimal.valueOf(random.nextDouble())));
                    }
                    return sales;
                }
            });
    
          javaFunctions(salesRDD, Sale.class).saveToCassandra
          ("java_api", "sales");
        }
    
        private void compute(JavaSparkContext sc) {
            JavaPairRDD productsRDD = javaFunctions(sc)
                    .cassandraTable("java_api", "products", Product.class)
                    .keyBy(new Function() {
                        @Override
                        public Integer call(Product product) throws Exception {
                            return product.getId();
                        }
                    });
    
            JavaPairRDD salesRDD = javaFunctions(sc)
                    .cassandraTable("java_api", "sales", Sale.class)
                    .keyBy(new Function() {
                        @Override
                        public Integer call(Sale sale) throws Exception {
                            return sale.getProduct();
                        }
                    });
    
            JavaPairRDD> joinedRDD = salesRDD.join(productsRDD);
    
            JavaPairRDD allSalesRDD = joinedRDD.flatMapToPair(new PairFlatMapFunction>, Integer, BigDecimal>() {
                @Override
                public Iterable> call(Tuple2> input) throws Exception {
                    Tuple2 saleWithProduct = input._2();
                    List> allSales = new ArrayList<>(saleWithProduct._2().getParents().size() + 1);
                    allSales.add(new Tuple2<>(saleWithProduct._1().getProduct(), saleWithProduct._1().getPrice()));
                    for (Integer parentProduct : saleWithProduct._2().getParents()) {
                        allSales.add(new Tuple2<>(parentProduct, saleWithProduct._1().getPrice()));
                    }
                    return allSales;
                }
            });
    
            JavaRDD summariesRDD = allSalesRDD.reduceByKey(new Function2() {
                @Override
                public BigDecimal call(BigDecimal v1, BigDecimal v2) throws Exception {
                    return v1.add(v2);
                }
            }).map(new Function, Summary>() {
                @Override
                public Summary call(Tuple2 input) throws Exception {
                    return new Summary(input._1(), input._2());
                }
            });
    
            javaFunctions(summariesRDD, Summary.class).saveToCassandra("java_api", "summaries");
        }
    
        private void showResults(JavaSparkContext sc) {
            JavaPairRDD summariesRdd = javaFunctions(sc)
                    .cassandraTable("java_api", "summaries", Summary.class)
                    .keyBy(new Function() {
                        @Override
                        public Integer call(Summary summary) throws Exception {
                            return summary.getProduct();
                        }
                    });
    
            JavaPairRDD productsRdd = javaFunctions(sc)
                    .cassandraTable("java_api", "products", Product.class)
                    .keyBy(new Function() {
                        @Override
                        public Integer call(Product product) throws Exception {
                            return product.getId();
                        }
                    });
    
            List>> results = productsRdd.leftOuterJoin(summariesRdd).values().toArray();
    
            for (Tuple2> result : results) {
                System.out.println(result);
            }
        }
    
        public static void main(String[] args) {
    //        if (args.length != 2) {
    //            System.err.println("Syntax: com.datastax.spark.demo.App  ");
    //            System.exit(1);
    //        }
    
    //      SparkConf conf = new SparkConf(true)
    //        .set("spark.cassandra.connection.host", "127.0.1.1")
    //        .set("spark.cassandra.auth.username", "cassandra")            
    //        .set("spark.cassandra.auth.password", "cassandra");
    
            //SparkContext sc = new SparkContext("spark://127.0.1.1:9045", "test", conf);
    
            //return ;
    
            /* try{
                SparkConf conf = new SparkConf(true); 
                conf.setAppName("Spark-Cassandra Integration");
                conf.setMaster("yarn-cluster");
                conf.set("spark.cassandra.connection.host", "192.168.1.200");
                conf.set("spark.cassandra.connection.rpc.port", "9042");
                conf.set("spark.cassandra.connection.timeout_ms", "40000");
                conf.set("spark.cassandra.read.timeout_ms", "200000");
                System.out.println("Hi.......Main Method1111...");
                conf.set("spark.cassandra.auth.username","cassandra");
                conf.set("spark.cassandra.auth.password","cassandra");
                System.out.println("Connected Successful...!\n");
                App app = new App(conf);
                app.run();
           }catch(Exception e){System.out.println(e);}*/
    
            SparkConf conf = new SparkConf();
            conf.setAppName("Java API demo");
    //     conf.setMaster(args[0]);
    //        conf.set("spark.cassandra.connection.host", args[1]);
              conf.setMaster("spark://192.168.1.117:7077");
              conf.set("spark.cassandra.connection.host", "192.168.1.200");
              conf.set("spark.cassandra.connection.port", "9042");
              conf.set("spark.ui.port","4040");
              conf.set("spark.cassandra.auth.username","cassandra");
              conf.set("spark.cassandra.auth.password","cassandra");
           App app = new App(conf);
            app.run();
        }
    
        public static class Product implements Serializable {
            private Integer id;
            private String name;
            private List parents;
    
            public Product() { }
    
            public Product(Integer id, String name, List parents) {
                this.id = id;
                this.name = name;
                this.parents = parents;
            }
    
            public Integer getId() { return id; }
            public void setId(Integer id) { this.id = id; }
    
            public String getName() { return name; }
            public void setName(String name) { this.name = name; }
    
            public List getParents() { return parents; }
            public void setParents(List parents) { this.parents = parents; }
    
            @Override
            public String toString() {
                return MessageFormat.format("Product'{'id={0}, name=''{1}'', parents={2}'}'", id, name, parents);
            }
        }
    
        public static class Sale implements Serializable {
            private UUID id;
            private Integer product;
            private BigDecimal price;
    
            public Sale() { }
    
            public Sale(UUID id, Integer product, BigDecimal price) {
                this.id = id;
                this.product = product;
                this.price = price;
            }
    
            public UUID getId() { return id; }
            public void setId(UUID id) { this.id = id; }
    
            public Integer getProduct() { return product; }
            public void setProduct(Integer product) { this.product = product; }
    
            public BigDecimal getPrice() { return price; }
            public void setPrice(BigDecimal price) { this.price = price; }
    
            @Override
            public String toString() {
                return MessageFormat.format("Sale'{'id={0}, product={1}, price={2}'}'", id, product, price);
            }
        }
    
        public static class Summary implements Serializable {
            private Integer product;
            private BigDecimal summary;
    
            public Summary() { }
    
            public Summary(Integer product, BigDecimal summary) {
                this.product = product;
                this.summary = summary;
            }
    
            public Integer getProduct() { return product; }
            public void setProduct(Integer product) { this.product = product; }
    
            public BigDecimal getSummary() { return summary; }
            public void setSummary(BigDecimal summary) { this.summary = summary; }
    
            @Override
            public String toString() {
                return MessageFormat.format("Summary'{'product={0}, summary={1}'}'", product, summary);
            }
        }
    }
    

提交回复
热议问题