Spark作业在Hive数据库中找不到表

时间:2016-01-04 06:43:01

标签: hadoop apache-spark hive

我在Hive的默认数据库中有一个表,并且可以在命令行中成功地从该表中获取记录:

>hive: select * from my_table;

但是当我在Spark中创建一个作业来运行时,它就像这样抛出异常:

INFO metastore.HiveMetaStore: 0: get_table : db=default tbl=my_table
16/01/04 03:41:42 INFO HiveMetaStore.audit: ugi=etl     ip=unknown-ip-addr      cmd=get_table : db=default tbl=my_table
Exception in thread "main" org.apache.spark.sql.AnalysisException: no such table my_table;

以下是该职位的代码:

SparkConf conf = new SparkConf().setMaster("local").setAppName("PhucdullApp");
        JavaSparkContext sc = new JavaSparkContext(conf);
        HiveContext sqlContext = new org.apache.spark.sql.hive.HiveContext(sc.sc());
        DataFrame df = sqlContext.sql("select * from my_table");
        df.show();
        sc.close();

1 个答案:

答案 0 :(得分:10)

(假设您使用的是在hive-default.xml文件中配置的默认Derby数据库)。确保您已按照以下步骤操作: -

  1. 将hive-default.xml从 $ HIVE_HOME / conf / 复制到 $ SPARK_HOME / conf / 目录。
  2. 找到您的“metastore_db”目录,并使用spark-submit命令从同一目录提交您的Spark作业。