我已经在干净的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()
我所看到的与该错误有关的大多数修补程序都涉及安装了配置单元的环境。如果我想对Spark中的数据帧使用sql语句,是否需要配置单元?还是我缺少其他功能?
跟进我的修复程序。就我而言,问题是Java 11是系统上的默认设置。一旦我将Java 8设置为默认metastore_db,便开始工作。
答案 0 :(得分:1)
是的,我们可以在不安装hive的情况下在spark上运行spark sql查询,默认情况下,hive使用mapred作为执行引擎,我们可以将hive配置为使用spark或tez作为执行引擎来更快地执行查询。 Hive on spark Hive使用Hive Metastore运行Hive查询。同时,可以通过spark执行sql查询。如果将spark用于执行简单的sql查询或未与hive metastore服务器连接,则使用spark嵌入式derby数据库,并在执行查询的用户主文件夹下创建一个名为 metastore_db 的新文件夹。 / p>