加入蜂巢中存在的两个火花表

时间:2015-10-26 16:51:32

标签: java scala hadoop apache-spark-sql

我已经在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");
    }
}

2 个答案:

答案 0 :(得分:2)

似乎你错过了应用中的scala反射jar文件。下载scala-reflect.jar,将其放在类路径中并重新编译。

答案 1 :(得分:0)

在Eclipse中,我通过添加scala-reflect-2.11.8.jar作为外部jar文件解决了这个问题。 jar文件可以在Spark目录的“jars”文件夹中找到。我正在使用Spark 2.1.0