gpt4 book ai didi

apache-spark - spark saveAsTable 真的创建表了吗?

转载 作者:行者123 更新时间:2023-12-05 07:26:26 25 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,因为缺乏 spark 的一些基础知识,我试试这个:

SparkSession spark = SparkSession.builder().appName("spark ...").master("local").enableHiveSupport().getOrCreate();
Dataset<Row> df = spark.range(10).toDF();
df.write().saveAsTable("foo");

这会在 Hive 的“默认”数据库下创建表,当然,我可以随时从表中获取数据。

我更新了上面的代码以摆脱“enableHiveSupport”,

SparkSession spark = SparkSession.builder().appName("spark ...").master("local").getOrCreate();
Dataset<Row> df = spark.range(10).toDF();
df.write().saveAsTable("bar");

代码运行良好,没有任何错误,但是当我尝试“select * from bar”时,spark 说,

Caused by: org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'bar' not found in database 'default';

所以我有两个问题,

1) 是否可以创建“原始”spark 表,而不是 hive 表?我知道Hive像mysql一样维护数据库中的元数据,spark是否也有类似的机制?

2) 在第二个代码片段中,spark 在调用 saveAsTable 时实际创建了什么?

非常感谢。

最佳答案

检查以下答案:

  1. 如果您只想在 spark 中创建原始 表,createOrReplaceTempView 可以帮助您。对于第二部分,检查下一个答案。
  2. 默认情况下,如果您在数据帧上调用 saveAsTable,如果您使用 enableHiveSupport,它会将表持久化到 Hive metastore 中。如果我们不 enableHiveSupport,表将由 Spark 管理,数据将位于 spark-warehouse 位置。重新启动 spark session 后,您将丢失这些表。

关于apache-spark - spark saveAsTable 真的创建表了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54322890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com