使用sqlContext.createExternalTable创建的表在重新启动spark后不可见



我正在使用以下语句创建配置单元外部表sqlContext.createExternalTable(tableName, "parquet", someDF.schema, Map("path" -> path))重新启动spark后,创建的表不可见。是否有可能以某种方式使用spark和某些数据帧中的现有模式创建一个在超光速粒子中持久化的配置单元表?我希望将表模式保存在hive元存储中。有可能吗?

谨此致意,Michael

使用HiveContext而不是SQLContext。来自SparkSQL和DataFrame指南:

使用HiveContext时,也可以使用saveAsTable命令将DataFrames保存为持久表。与registerTempTable命令不同,saveAsTable将具体化数据帧的内容,并创建指向HiveMetastore中数据的指针。即使在Spark程序重新启动后,只要保持与同一元存储的连接,持久表仍然存在。持久表的DataFrame可以通过在具有表名称的SQLContext上调用表方法来创建。

默认情况下,saveAsTable将创建一个"托管表",这意味着数据的位置将由元存储控制。当删除表时,托管表也会自动删除其数据。

因为HiveContext继承自SQLContext,所以您不会失去该方面的功能,并且可以在Hive元存储中查找表以及在HiveQL中编写查询。您可以在此处找到有关使用HiveContext的更多信息,并在此处找到其使用示例。

相关内容

  • 没有找到相关文章

最新更新