【发布时间】:2019-01-23 08:28:23
【问题描述】:
这可能是一个愚蠢的问题,因为缺乏一些火花的基本知识,我试试这个:
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) 是否可以创建一个“原始”火花表,而不是配置单元表?我知道Hive像mysql一样维护数据库中的元数据,spark也有类似的机制吗?
2) 在第二个代码sn-p中,调用saveAsTable时spark实际创建了什么?
非常感谢。
【问题讨论】:
标签: apache-spark hive