apache-spark - Spark-sql 可以在没有安装配置单元的情况下工作吗?

标签 apache-spark hive apache-spark-sql

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

spark.read.json("/data/flight-data/json/2015-summary.json")
.createOrReplaceTempView("some_sql_view") <p></p>

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 就开始工作。

最佳答案

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

关于apache-spark - Spark-sql 可以在没有安装配置单元的情况下工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53815065/

相关文章:

scala - 将 Spark 数据帧写入现有的 Parquet Hive 表中

apache-spark - Tez VS Spark - 巨大的性能差异

sql - 如何在 hive 中创建一个空的结构数组?

hadoop - 使用 HUE 创建 Hive 表

apache-spark - 在通过唯一键连接 DataFrame 时如何避免洗牌?

apache-spark - 如何在 pyspark 管道中添加 UDF?

apache-spark - 为什么 Spark 对大小大于 autoBroadcastJoinThreshold 的文件应用广播连接?

apache-spark - 为什么 RDD 不适合流式任务?

scala - Spark Structured Streaming 左外连接为已经匹配的行返回外空值

dataframe - Pyspark:如何为另一列中具有相同值的所有行设置相同的id?