如何使用Java API将DataSet <row> ds插入cassandra

时间:2017-09-07 23:20:19

标签: apache-spark-sql spark-dataframe spark-cassandra-connector cassandra-3.0

Spark Cassandra Connector 2.11-2.0.5所需的示例代码, 无法直接将数据集插入cassandra db

1 个答案:

答案 0 :(得分:0)

  1. 添加以下Cassandra依赖项

    Location.computeDistanceAndBearing()
  2. 将您的Cassandra数据库配置详细信息设置为Spark

    Asuming you are using ajax datatable . If not draw idea from this example 
    Add a row where you can set range for filter as:
    <div class="col-md-3"> <label>From:</label> <input readonly="readonly" type="text" id="mindate" class="srchdp"> <i class="fa fa-times-circle-o" id="clear-mindate"></i></div>
                                <div class="col-md-3"> <label>To:</label> <input readonly="readonly" type="text" id="maxdate" class="srchdp"> <i class="fa fa-times-circle-o" id="clear-maxdate" ></i></div>
                                <div class="col-md-2"><button class="btn btn-primary" id="filter-record">Filter</button></div>
    
    //initialize datepicker as
    
                $("input:text.srchdp").datetimepicker({
                changeMonth: true,
                changeYear: true,
                yearRange: "-100:+0",
                dateFormat: 'mm/dd/yy',
                controlType: 'select',
                timeFormat: 'hh:mm:ss TT',
            })
    
    // now keep a event on filter button click
    
    
        $(document).on("click", "#filter-record", function () {
    
                assetListVM.search("").draw(); 
            });
    
    // now on ajax request 
    
           public ActionResult Get([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest requestModel, string mindate,string maxdate, string searchbase)
            {
                DataBaseEntities db = new DataBaseEntities();
                IQueryable<Wishlist> query = db.Wishlists;
                var totalCount = query.Count();
    
                #region Filtering
                // Apply filters for searching
    
                    var value = requestModel.Search.Value.Trim();
                if (!string.IsNullOrEmpty(searchbase))
                {
                    if (!string.IsNullOrEmpty(mindate) && !string.IsNullOrEmpty(maxdate))
                    {
                        DateTime datevaluemin;
                        DateTime datevaluemax;
                        var mindateval = DateTime.TryParse(mindate, out datevaluemin);
                        var maxdateval = DateTime.TryParse(mindate, out datevaluemax);
    
                        if (mindateval && maxdateval)
                        {
                            var minvalue = Convert.ToDateTime(mindate);
                            var maxvalue = Convert.ToDateTime(maxdate);
                            if (searchbase == "CreatedDate")
                            {
                                query = query.Where(p =>
                                                    p.CreatedDate >= minvalue
                                                    && p.CreatedDate <= maxvalue);
                            }
                        }
                    }
                    else if (!string.IsNullOrEmpty(mindate))
                    {
                        DateTime datevalue;
                        var mindateval = DateTime.TryParse(mindate, out datevalue);
    
                        if (mindateval)
                        {
                            var minvalue = Convert.ToDateTime(mindate);
                            if (searchbase == "CreatedDate")
                            {
                                query = query.Where(p =>
                                                    p.CreatedDate >= minvalue
                                                    );
                            }
    
                        }
                    }
                }
                if (requestModel.Search.Value != string.Empty)
                {      
                        query = query.Where(p => p.Id.ToString().Equals(value) ||
                                 p.ProductId.ToString().Equals(value) ||
                                 p.MemberId.ToString().Contains(value)
    
    
                           );                
                }
    
                var filteredCount = query.Count();
    
                #endregion Filtering
    
                #region Sorting
                // Sorting
                var sortedColumns = requestModel.Columns.GetSortedColumns();
                var orderByString = String.Empty;
    
                foreach (var column in sortedColumns)
                {
                    orderByString += orderByString != String.Empty ? "," : "";
                    orderByString += (column.Data) + (column.SortDirection == Column.OrderDirection.Ascendant ? " asc" : " desc");
                }
    
                query = query.OrderBy(orderByString == string.Empty ? " asc" : orderByString);
    
                #endregion Sorting
    
                // Paging
                query = query.Skip(requestModel.Start).Take(requestModel.Length);
    
    
                var data = query.Select(asset => new
                {
                    Id = asset.Id,
                    ProductId = asset.ProductId,
                    ProductName = asset.Product.ProductName,           
                    MemberId=asset.MemberId,
                    CreatedDate = asset.CreatedDate.ToString(),
                }).ToList();
    
                return Json(new DataTablesResponse(requestModel.Draw, data, filteredCount, totalCount), JsonRequestBehavior.AllowGet);
            }
        }
    }
    
    
    this code is not complete hence it doesn't work alone.
    
  3. 创建Spark上下文

    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.10</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector-java_2.10</artifactId>
        <version>1.2.1</version>
    </dependency>
    
  4. 获得RDD后,通过提供密钥空间名称&amp ;,将其保存到Cassandra数据库。表名

    SparkConf sparkConf = new SparkConf();
    sparkConf.setAppName("Spark-Cassandra Integration");
    sparkConf.setMaster("local[4]");
    sparkConf.set("spark.cassandra.connection.host", "127.0.0.1");
    sparkConf.set("spark.cassandra.connection.native.port", "9042");
    sparkConf.set("spark.cassandra.connection.rpc.port", "9160");
    sparkConf.set("spark.cassandra.connection.timeout_ms", "5000");
    sparkConf.set("spark.cassandra.read.timeout_ms", "200000");
    sparkConf.set("spark.cassandra.auth.username", "test_user");
    sparkConf.set("spark.cassandra.auth.password", "test_password");
    
  5. 有关详细信息,请查看我的博文Save data to Cassandra tables using Apache Spark