【发布时间】:2017-09-01 22:41:51
【问题描述】:
作为我正在处理的数据集成过程的一部分,我需要将 Spark SQL DataFrame 持久化为外部 Hive 表。
我目前的限制:
- 目前仅限于 Spark 1.6 (v1.6.0)
- 需要将数据持久化到特定位置,即使删除表定义(因此外部表)也保留数据
我找到了一个令人满意的解决方案来编写数据帧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#pyspark.sql.DataFrameWriter)。
是否有更好/更安全/更标准的方式来持久化数据帧?
【问题讨论】:
标签: apache-spark hive spark-dataframe pyspark-sql