栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spark和Cassandra Java应用程序:线程“ main”中的异常java.lang.NoClassDefFoundError:org /apache / spark / sql / Dat

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spark和Cassandra Java应用程序:线程“ main”中的异常java.lang.NoClassDefFoundError:org /apache / spark / sql / Dat

您收到“ java.lang.NoClassDefFoundError:org / apache / spark / sql /
Dataset”错误,因为pom.xml文件中缺少“ spark-sql”依赖项。

如果要使用Spark 2.0.0读取Cassandra表,则需要以下最低依赖项。

<dependency>    <groupId>org.apache.spark</groupId>    <artifactId>spark-core_2.11</artifactId>    <version>2.0.0</version></dependency><dependency>    <groupId>org.apache.spark</groupId>    <artifactId>spark-sql_2.11</artifactId>    <version>2.0.0</version></dependency><dependency>    <groupId>com.datastax.spark</groupId>    <artifactId>spark-cassandra-connector_2.11</artifactId>    <version>2.0.0-M3</version></dependency>

Spark 2.0.0提供了SparkSession和数据集API。下面是读取Cassandra表并打印记录的示例程序。

 public class SparkCassandraDatasetApplication { public static void main(String[] args) { SparkSession spark = SparkSession          .builder()          .appName("SparkCassandraDatasetApplication")          .config("spark.sql.warehouse.dir", "/file:C:/temp")          .config("spark.cassandra.connection.host", "127.0.0.1")          .config("spark.cassandra.connection.port", "9042")          .master("local[2]")          .getOrCreate(); //Read data Dataset<Row> dataset = spark.read().format("org.apache.spark.sql.cassandra")        .options(new HashMap<String, String>() { {     put("keyspace", "mykeyspace");     put("table", "mytable"); }        }).load();   //Print data   dataset.show();          spark.stop();   }        }

如果仍然要使用RDD,请使用下面的示例程序。

public class SparkCassandraRDDApplication {public static void main(String[] args) {    SparkConf conf = new SparkConf() .setAppName("SparkCassandraRDDApplication") .setMaster("local[2]") .set("spark.cassandra.connection.host", "127.0.0.1") .set("spark.cassandra.connection.port", "9042");    JavaSparkContext sc = new JavaSparkContext(conf);    //Read    JavaRDD<UserData> resultsRDD = javaFunctions(sc).cassandraTable("mykeyspace", "mytable",CassandraJavaUtil.mapRowTo(UserData.class));    //Print    resultsRDD.foreach(data -> {        System.out.println(data.id);        System.out.println(data.username);    });    sc.stop();  }}

上面程序中使用的Javabean(UserData)如下。

public class UserData implements Serializable{    String id;  String username;       public String getId() {      return id;  }  public void setId(String id) {      this.id = id;  }  public String getUsername() {     return username;  }  public void setUsername(String username) {     this.username = username;   }    }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号