Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导入csv';通过spark(Java Api)将s转换为数据stax cassandra_Java_Csv_Apache Spark_Cassandra 2.0_Datastax - Fatal编程技术网

导入csv';通过spark(Java Api)将s转换为数据stax cassandra

导入csv';通过spark(Java Api)将s转换为数据stax cassandra,java,csv,apache-spark,cassandra-2.0,datastax,Java,Csv,Apache Spark,Cassandra 2.0,Datastax,有没有一种方法可以通过spark的java api将csv导入cassandra,而无需为csv创建pojo类。我可以通过创建一个如下所示的pojo类来插入csv,有没有办法不用使用spark java api以编程方式为csv创建pojo类来插入csv My csv looks like this Name,Age,bg,sex ammar,67,ab+,M nehan,88,b+,M moin,99,m+,M arbaaz,67,a+,M ... 下面是程序 import org.apac

有没有一种方法可以通过spark的java api将csv导入cassandra,而无需为csv创建pojo类。我可以通过创建一个如下所示的pojo类来插入csv,有没有办法不用使用spark java api以编程方式为csv创建pojo类来插入csv

My csv looks like this
Name,Age,bg,sex
ammar,67,ab+,M
nehan,88,b+,M
moin,99,m+,M
arbaaz,67,a+,M
...
下面是程序

import org.apache.commons.lang3.StringUtils;
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 com.cassandra.insertion.MergeGeneSymDataInsertion;
import com.cassandra.insertion.MergeGeneSymDataInsertion.HgIpsenGeneSym;
import com.publicdata.task.PublicDataInsertion.PublicData;
import static com.datastax.spark.connector.japi.CassandraJavaUtil.*;
public class InsertCsv {

static JavaSparkContext ctx = null;
static boolean isHeader = true;

public static void main(String[] args) {

    try {
        ctx = new JavaSparkContext(new SparkConf().setMaster("local[4]")
                .setAppName("TestCsvInserion"));
        insertCsv(ctx);
    } catch (Exception e) {
        e.printStackTrace();
    }

}

private static void insertCsv(JavaSparkContext ctx) {

    JavaRDD<String> testfileRdd = ctx
            .textFile("/home/syedammar/Pilot Project /test.csv");



    JavaRDD<Bats> batsclassRdd = testfileRdd
            .map(new Function<String, Bats>() {

                @Override
                public Bats call(String line) throws Exception {
                    // TODO Auto-generated method stub
                    if(!isHeader){


                    String[] words=StringUtils.split(line, ",");
                    String name = words[0];
                    String age = words[1];
                    String bg = words[2];
                    String sex = words[3];


                return new Bats(name, age, bg, sex);
                    }
                    else
                    {
                        isHeader=false;
                        return null;
                    }


                }
            }).filter(new Function<Bats, Boolean>() {

                @Override
                public Boolean call(Bats obj) throws Exception {
                    // TODO Auto-generated method stub

                    return obj!=null;
                }
            }).coalesce(1);

    javaFunctions(batsclassRdd).writerBuilder("test", "bats", mapToRow(Bats.class)).saveToCassandra();




}

public static class Bats {
    public Bats() {
        // TODO Auto-generated constructor stub
    }

    private String name;
    private String age;
    private String bg;
    public Bats(String name, String age, String bg, String sex) {
        super();
        this.name = name;
        this.age = age;
        this.bg = bg;
        this.sex = sex;
    }

    private String sex;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getBg() {
        return bg;
    }

    public void setBg(String bg) {
        this.bg = bg;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

}
import org.apache.commons.lang3.StringUtils;
导入org.apache.spark.SparkConf;
导入org.apache.spark.api.java.JavaRDD;
导入org.apache.spark.api.java.JavaSparkContext;
导入org.apache.spark.api.java.function.function;
导入com.cassandra.insertion.MergeGeneSymDataInsertion;
导入com.cassandra.insertion.MergeGeneSymDataInsertion.HgIpsenGeneSym;
导入com.publicdata.task.PublicDataInsertion.publicdata;
导入静态com.datastax.spark.connector.japi.CassandraJavaUtil.*;
公共类InsertCsv{
静态JavaSparkContext ctx=null;
静态布尔isHeader=true;
公共静态void main(字符串[]args){
试一试{
ctx=新的JavaSparkContext(新的SparkConf().setMaster(“本地[4]”)
.setAppName(“TestCsvInserion”);
insertCsv(ctx);
}捕获(例外e){
e、 printStackTrace();
}
}
私有静态void insertCsv(JavaSparkContext ctx){
JavaRDD testfileRdd=ctx
.textFile(“/home/syedamar/Pilot Project/test.csv”);
JavaRDD batsclassRdd=testfileRdd
.map(新函数(){
@凌驾
公共Bats调用(字符串行)引发异常{
//TODO自动生成的方法存根
如果(!isHeader){
String[]words=StringUtils.split(第,“,”行);
字符串名称=单词[0];
字符串年龄=单词[1];
字符串bg=单词[2];
字符串性别=单词[3];
返回新蝙蝠(姓名、年龄、背景、性别);
}
其他的
{
isHeader=假;
返回null;
}
}
}).filter(新函数(){
@凌驾
公共布尔调用(Bats obj)引发异常{
//TODO自动生成的方法存根
返回obj!=null;
}
}).合并(1);
javaFunctions(batsclassRdd).writerBuilder(“test”,“bats”,mapToRow(bats.class)).saveToCassandra();
}
公共静态类蝙蝠{
公共蝙蝠(){
//TODO自动生成的构造函数存根
}
私有字符串名称;
私弦时代;
私有字符串bg;
公共蝙蝠(字符串名称、字符串年龄、字符串背景、字符串性别){
超级();
this.name=名称;
这个。年龄=年龄;
this.bg=bg;
这个。性=性;
}
私密性;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getAge(){
回归年龄;
}
公共无效设置(字符串期限){
这个。年龄=年龄;
}
公共字符串getBg(){
返回bg;
}
公共无效设置(字符串背景){
this.bg=bg;
}
公共字符串getSex(){
回归性;
}
公共无效集合(字符串性别){
这个。性=性;
}
}

}是的,你能做到。我在浏览时发现的。。。请参阅- 有两种方法,遵循方法B的程序

方法B不需要POJO类,但如果使用Java,POJO类将使代码更易于阅读


希望这会有所帮助。

我想你想要的是,看到你发送的链接,我看不清楚。您能给我一个问题中上述csv模板的示例(代码),将其插入到具有相同csv头的cassandra表中,而无需通过spark java api创建pojo类。谢谢