我已经在一个干净的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()
Most of the fixes that I have see in relation to this error refer to environments where hive is installed. Is hive required if I want to use sql statements against dataframes in spark or am i missing something else?
To follow up with my fix. The problem in my case was that Java 11 was the default on my system. As soon as I set Java 8 as the default metastore_db started working.
发布于 2018-12-18 01:36:56
是的,我们可以在不安装hive的情况下在spark上运行spark sql查询,默认情况下,hive使用mapred作为执行引擎,我们可以配置hive使用spark或tez作为执行引擎来更快地执行我们的查询。spark配置单元上的配置单元使用配置单元元存储来运行配置单元查询。同时,可以通过spark执行sql查询。如果spark用于执行简单的sql查询,或者没有连接到hive metastore服务器,它将使用嵌入式derby数据库,并在执行查询的用户主文件夹下创建一个名为metastore_db的新文件夹。
https://stackoverflow.com/questions/53815065
复制相似问题