Apache spark spark saveAsTable真的创建了一个表吗?
这可能是一个愚蠢的问题,因为我对spark缺乏一些基本知识,我尝试以下方法:Apache spark spark saveAsTable真的创建了一个表吗?,apache-spark,hive,Apache Spark,Hive,这可能是一个愚蠢的问题,因为我对spark缺乏一些基本知识,我尝试以下方法: SparkSession spark = SparkSession.builder().appName("spark ...").master("local").enableHiveSupport().getOrCreate(); Dataset<Row> df = spark.range(10).toDF(); df.write().saveAsTable("foo"); 我这里有两个问题 1) 是
SparkSession spark = SparkSession.builder().appName("spark ...").master("local").enableHiveSupport().getOrCreate();
Dataset<Row> df = spark.range(10).toDF();
df.write().saveAsTable("foo");
我这里有两个问题
1) 是否可以创建“原始”spark表,而不是配置单元表?我知道Hive像mysql一样存储数据库中的元数据,spark也有类似的机制吗
2) 在第二段代码中,spark在调用saveAsTable时实际创建了什么
非常感谢。检查以下答案:
raw
表格,只有在sparkcreateOrReplaceTempView
中才能帮助您。第二部分,检查下一个答案saveAsTable
,则如果使用enablehavesupport
,它会将表持久化到配置单元元存储中。如果我们不启用HIVESupport,表将由Spark管理,数据将位于Spark仓库
位置下。重新启动spark会话后,您将松开这些表您好,RegisterEmptable已弃用,请改用createOrReplaceTempView(viewName)。但是createOrReplaceTempView没有帮助,我的意思是,像saveAsTable一样,我无法在新会话中从它获取数据。感谢您的提醒,如果您想从新会话获取表,我们必须使用配置单元支持
SparkSession spark = SparkSession.builder().appName("spark ...").master("local").getOrCreate();
Dataset<Row> df = spark.range(10).toDF();
df.write().saveAsTable("bar");
Caused by: org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'bar' not found in database 'default';