我在一个的ubuntu实例上安装了spark 2.4.0。Spark数据帧工作正常但是当我尝试对数据帧使用spark.sql时,如下例所示,我收到错误“无法访问Metastore。此类不应在运行时访问”。
spark.read.json("/data/flight-data/json/2015-summary.json")
.createOrReplaceTempView("some_sql_view")
spark.sql("""SELECT DEST_COUNTRY_NAME, sum(count)
FROM some_sql_view GROUP BY DEST_COUNTRY_NAME
""").where("DEST_COUNTRY_NAME like 'S%'").where("sum(count) > 10").count()
我看到的与此错误相关的大多数修复都是指安装了hive的环境。如果我想对spark中的数据帧使用sql语句或者我缺少其他东西,是否需要配置单元?
跟进我的修复。我的问题是Java 11是我系统的默认设置。一旦我将Java 8设置为默认的metastore_db就开始工作了。
是的,我们可以在不安装配置单元的情况下在spark上运行spark sql查询,默认情况下,hive使用mapred作为执行引擎,我们可以配置配置单元使用spark或tez作为执行引擎来更快地执行我们的查询。Spark on hive上的Hive使用hive Metastore来运行配置单元查询。同时,sql查询可以通过spark执行。如果spark用于执行简单的sql查询或未与hive Metastore服务器连接,则它使用嵌入式derby数据库,并且将在执行查询的用户主文件夹下创建名为metastore_db的新文件夹。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。