在java上为cassandra设置spark需要一些帮助(Need some help on setting up spark for cassandra on java)
设置spark来访问java上的cassandra就是抛出NoClassDefFoundError
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Cloneable at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at Client.main(Client.java:22) Caused by: java.lang.ClassNotFoundException: scala.Cloneable at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 13 more
添加了两个jar文件。 spark-cassandra-connector-java-assembly-1.4.0-M1-SNAPSHOT.jar&spark-core_2.10-0.9.0-incubating.jar。 spark-cassandra-connector-java-assembly-1.4.0-M1-SNAPSHOT.jar是针对scala 2.10构建的。 在命令提示符下键入scala -version显示scala代码运行器版本2.11.6。 从火花壳中获取火花没有问题。 即使从spark-shell访问cassandra列系列也能正常工作。
import java.util.*; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import com.datastax.spark.connector.*; import com.datastax.spark.connector.cql.*; import com.datastax.spark.*; import org.apache.spark.SparkConf; import org.apache.spark.SparkContext; 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.PairFunction; //import scala.Tuple2; import org.apache.spark.api.java.*; public class Client { public static void main(String[] a) { SparkConf conf = new SparkConf().setAppName("MTMPNLTesting").setMaster("192.168.1.15"); } }
可能是错误的原因??
Setting up spark to access cassandra on java is throwing NoClassDefFoundError
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Cloneable at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at Client.main(Client.java:22) Caused by: java.lang.ClassNotFoundException: scala.Cloneable at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 13 more
Two jar files are added. spark-cassandra-connector-java-assembly-1.4.0-M1-SNAPSHOT.jar & spark-core_2.10-0.9.0-incubating.jar. spark-cassandra-connector-java-assembly-1.4.0-M1-SNAPSHOT.jar is build against scala 2.10. Typing scala -version on command prompt showing scala code runner version 2.11.6. Accessing spark from spark-shell have no issue. Even access in cassandra column family from spark-shell is working fine.
import java.util.*; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import com.datastax.spark.connector.*; import com.datastax.spark.connector.cql.*; import com.datastax.spark.*; import org.apache.spark.SparkConf; import org.apache.spark.SparkContext; 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.PairFunction; //import scala.Tuple2; import org.apache.spark.api.java.*; public class Client { public static void main(String[] a) { SparkConf conf = new SparkConf().setAppName("MTMPNLTesting").setMaster("192.168.1.15"); } }
What might be the reason of the error??
原文:https://stackoverflow.com/questions/31026511
最满意答案
不应显示仅包含链接表的2个主键的桥表。
更多信息可以在这里找到:
Bridge tables, which only contain the 2 Primary Keys of the linked tables are not supposed to show up.
Further information can be found here:
相关问答
更多-
这里是我刚刚得到EF 4.1(RC)在Code First中进行表分割的方法。 定义你的两个实体。 确保将密钥包含在两个实体中。 另外,在每个指向其他实体的实体中包含导航属性。 在您的OnModelCreating覆盖。 。 。 一个。 将两个实体映射到同一个表。 湾 创建两个表之间的关系。 modelBuilder.Entity
().ToTable("MySingleTable"); modelBuilder.Entity ().ToTable(" ... -
所以,似乎问题是,IIS中应用程序池的配置。 空闲超时在20分钟之前设置,现在超时设置为24h,问题消失了。 So, it seems to be that, the problem was the configuration of the application pool in IIS. The Idle time-out was set before at 20 minutes and now with the timeout set at 24h, the problem disappeared.
-
“usuario_conquistas”表不应具有列Id,它应使用列IdUsuario和IdConquista作为复合主键。 The "usuario_conquistas" table should not have a column Id, it should use the columns IdUsuario and IdConquista as a composite primary key.
-
在EF 5 Code First中将数据库记录展开为主/明细(Unflatten a database record into Master/Detail in EF 5 Code First)[2022-01-25]
您想要做的与EF无关 - 您需要使用返回项集合的新方法或属性来实现此实体的部分类。 当然,您需要使用各种类型数据ID属性中的值填充此集合。 例如: public ICollectionGenreDataIDs { get { var col = new List () { GENRE_DATA_ID_NavProperty, ADDITIONAL_GENRE_DATA_ID_NavProperty, ..., ADDITION_GENRE_N ... -
目前无法在EF Core中执行此功能,因为该功能尚未添加。 从文档 : 尚未支持没有实体类来表示连接表的多对多关系。 但是,您可以通过包含连接表的实体类并映射两个单独的一对多关系来表示多对多关系。 It is not currently possible to do this in EF Core as that feature has not yet been added. From the docs: Many-to-many relationships without an entity class ...
-
不应显示仅包含链接表的2个主键的桥表。 更多信息可以在这里找到: http://smehrozalam.wordpress.com/2010/06/29/entity-framework-queries-involving-many-to-many-relationship-tables/ Bridge tables, which only contain the 2 Primary Keys of the linked tables are not supposed to show up. Further ...
-
应该有一个相当“肮脏”的解决方案。 它需要一些代码更改,但会让你的Foo实体有字段A和B Foo类: class Foo { [Key] public int FooId { get; set; } public int A { get; set; } [NotMapped] public int? B { get { return FooB == null ? null : FooB.B; } set { ...
-
这是一个我认为可以满足您需求的解决方案,唯一需要注意的是ID字段在两个表中都需要是唯一的,您需要自己处理。 除此之外,这种技术来自于这里所谓的“每个混凝土类型表”。 我们要做的是创建一个抽象类,其中包含您的类型具有的属性,并从中继承。 这应该使两个类保持同步,并且您可以通过来回转换来获得一个或另一个。 这里重要的是DatabaseGeneratedAttribute设置为'None'; 使用这种技术,由于两个表具有相同的PK,因此EF无法知道它需要跨表共享它们。 父类必须是抽象的; 至少,这是我能够将它识别 ...
-
HasMany(x => x.Applications).KeyColumn("intLicenseID"); 缺少.Cascade.All()因此保存许可证也会保存对应用程序的更改。 而.Inverse也很好告诉NH应用程序负责该关联。 并且 // class LicenseCommon public void Add(LicenseApplication application) { application.License = license; application.TableID = ...
-
EF模型映射多个数据库(EF model mapping multiple databases)[2022-10-31]
相同的模型无法从两个不同的DB获取数据。 最简单的方法是在同一个数据库中创建一个视图,该视图从另一个数据库调用和返回数据,即内部调用外部数据库视图的抽象视图。 The same model can't get data from the two different DBs. The easiest way would be to create a view in the same database that calls and returns data from the other database i.e ...