我已经在eclipse中编写了Java程序来加入spark中的两个表,但我在package
附近收到错误
这是以下错误
类型scala.reflect.api.TypeTags $ TypeTag无法解析。它是 间接引用所需的.class文件
这是我写的程序
package joins;
import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.hive.HiveContext;
public class Spark {
public static void main(String[] args) {
// TODO Auto-generated method stub
SparkConf conf = new SparkConf();
SparkContext sc = new SparkContext(conf);
HiveContext sqlContext = new org.apache.spark.sql.hive.HiveContext(sc);
sqlContext.sql(" use myown ");
DataFrame table_01 = sqlContext.sql("SELECT * FROM customer");
table_01.saveAsTable("spark_table_01");
sqlContext.cacheTable("spark_table_01");
DataFrame table_02 = sqlContext.sql("SELECT * FROM account");
table_02.saveAsTable("spark_table_02");
sqlContext.cacheTable("spark_table_02");
DataFrame table_join = sqlContext.sql(" SELECT a.* FROM customer a join account b on a.ssn=b.ssn ");
table_join.insertInto("customeraccount");
sqlContext.uncacheTable("spark_table_01");
sqlContext.uncacheTable("spark_table_02");
}
}
答案 0 :(得分:2)
似乎你错过了应用中的scala反射jar文件。下载scala-reflect.jar,将其放在类路径中并重新编译。
答案 1 :(得分:0)
在Eclipse中,我通过添加scala-reflect-2.11.8.jar作为外部jar文件解决了这个问题。 jar文件可以在Spark目录的“jars”文件夹中找到。我正在使用Spark 2.1.0