导入csv';通过spark(Java Api)将s转换为数据stax cassandra
有没有一种方法可以通过spark的java api将csv导入cassandra,而无需为csv创建pojo类。我可以通过创建一个如下所示的pojo类来插入csv,有没有办法不用使用spark java api以编程方式为csv创建pojo类来插入csv导入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
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类。谢谢