作为我正在进行的数据集成过程的一部分,我需要将Spark SQL数据框架作为外部蜂巢表。
目前我的约束:
- 目前仅限于Spark 1.6(v1.6.0)
- 需要将数据持续在特定位置,即使删除表定义(因此 exturn 表) 也保留了数据
我找到了编写数据框的令人满意的解决方案df
,如下所示:
df.write.saveAsTable('schema.table_name',
format='parquet',
mode='overwrite',
path='/path/to/external/table/files/')
对结果表进行describe extended schema.table_name
确认确实是外部的。我还可以确认即使表本身删除了数据(根据需要)保留数据。
我主要关心的是,我在任何地方都找不到有记录的例子,也无法在官方文档中找到很多提及 - 特别是使用path
来执行外部表的创建。(https://spark.apache.org/docs/1.6.0/api/python/pyspark.sql.html.html#pyspark.sql.dataframewrater)。
是否有更好/更安全/更多的标准方法可以持续数据框架?
我宁愿自己创建蜂巢表(例如,创建外部表格(如果不存在的话)),请按照我的需要,然后在Spark中进行:df.write.saveastable('schema.table_name','schema.table_name',',,模式='overwrite')。
这样,您就可以控制表格创建,并且不依赖于HiveContext做所需的工作。过去,Hive表的问题以这种方式创建,并且该行为将来可能会发生变化,因为API是通用的,并且无法保证HiveContext的基本实现。