Spark-sql 可以在没有安装 hive 的情况下工作吗?

mik*_*lus 4 hive apache-spark apache-spark-sql

我已在干净的 ubuntu 实例上安装了 Spark 2.4.0。Spark 数据帧工作正常,但是当我尝试对数据帧使用 Spark.sql 时(如下例所示),我收到错误“无法访问元存储。此类不应在运行时访问。”

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 后,它就开始工作了。

小智 6

是的,我们可以在spark上运行spark sql查询,而无需安装hive,默认情况下hive使用mapred作为执行引擎,我们可以配置hive使用spark或tez作为执行引擎来更快地执行我们的查询。Spark Hive 上的 Hive 使用 Hive 元存储来运行 Hive 查询。同时可以通过spark执行sql查询。如果 Spark 用于执行简单的 sql 查询或未连接 hive Metastore 服务器,则其使用嵌入式 derby 数据库,并且将在执行查询的用户主文件夹下创建一个名为metastore_db的新文件夹。