我使用hdp3.1并添加了spark2、hive和其他需要的服务。我把 hive 里的酸性特征翻了个底朝天。spark作业在Hive中找不到table。但是这个表存在于Hive中。异常如下:org.apache.spark.sql.analysisexception:table or view not found spark的conf文件夹中有hive-site.xml。它是由hdp自动创建的。但它与hive的conf文件夹中的文件不同。从日志中,spark可以正确地获得hive的节俭uri。我使用sparksql并在sparkshell中创建了一个配置单元表。我发现表是在spark.sql.warehouse.dir指定的折叠中创建的。我将其值更改为hive.metastore.warehouse.dir。但问题仍然存在。在创建spark会话时,我还启用了配置单元支持。
val ss = SparkSession.builder().appName("统计").enableHiveSupport().getOrCreate()
3条答案
按热度按时间ghg1uchk1#
您可以在配置单元配置中使用配置单元仓库连接器和llap
fdx2calv2#
spark的conf文件夹中的hive-site.xml中有metastore.catalog.default。它是Spark。应该换成 hive 。顺便说一句,我们应该禁用Hive的酸性功能。
k75qkfdt3#
在hdp3.0及更高版本中,spark和hive使用独立的目录来访问相同或不同平台上的sparksql或hive表。
默认情况下,spark只读取spark目录。而且,这意味着spark应用程序尝试读取/写入使用hivecli创建的表时将失败,并出现table not found异常。
解决方法:
在hivecli和sparksql中创建表
Hive仓库连接器