我在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();
答案 0 :(得分:10)
(假设您使用的是在hive-default.xml文件中配置的默认Derby数据库)。确保您已按照以下步骤操作: -