Spark:可以使用DataFrame.saveAsTable或DataFrameWriter.options传递哪些选项?

时间:2015-07-18 02:43:45

标签: scala hadoop apache-spark hive parquet

开发人员和API文档都不包含有关可以在DataFrame.saveAsTableDataFrameWriter.options中传递哪些选项的任何参考,它们会影响Hive表的保存。

我希望在这个问题的答案中,我们可以汇总对Spark开发人员有用的信息,他们希望更好地控制Spark如何保存表格,并且可能为改进Spark的文档提供基础。

7 个答案:

答案 0 :(得分:4)

看看https://github.com/delta-io/delta/blob/master/src/main/scala/org/apache/spark/sql/delta/DeltaOptions.scala类“ DeltaOptions”

当前支持的选项是:

  • replaceWhere
  • mergeSchema
  • overwriteSchema
  • maxFilesPerTrigger
  • 排除正则表达式
  • ignoreFileDeletion
  • ignoreChanges
  • ignoreDeletes
  • optimizeWrite
  • dataChange
  • queryName
  • checkpointLocation
  • 路径
  • timestampAsOf
  • versionAsOf

答案 1 :(得分:3)

在任何地方都看不到options的原因是它们是特定于格式的,开发人员可以继续使用一组新的options创建自定义写入格式。

但是,对于几种受支持的格式,我已经列出了spark代码本身提到的选项:

答案 2 :(得分:0)

根据源代码,您可以指定path选项(指示将hive外部数据存储在hdfs中的位置,并在Hive DDL中转换为“位置”)。 不确定您是否还有其他与saveAsTable相关的选项,但我将搜索更多选项。

答案 3 :(得分:0)

根据最新的spark文档,以下是使用.saveAsTable(name, format=None, mode=None, partitionBy=None, **options) API将DataFrame写入外部存储时可以传递的选项

如果您单击文档右侧的source超链接,则可以遍历并查找其他不清楚的参数的详细信息 例如。 formatoptions(在DataFrameWriter类下进行了描述)

因此,当文档读取options – all other string options时,它指的是options,它为您提供了spark 2.4.4的以下选择

  

timeZone:设置字符串,该字符串指示要用于格式化的时区   JSON / CSV数据源或分区值中的时间戳记。如果未设置,则使用默认值会话本地时区。

,当它读取format – the format used to save时,它是指format(source)

  
    

指定基础输出数据源。

  
     

参数

     
    

source –字符串

         数据源的

名称,例如“ json”,“ parquet”。

  

希望这会有所帮助。

答案 4 :(得分:-1)

我相信这是您正在寻找的:https://github.com/databricks/spark-csv

答案 5 :(得分:-1)

版本之间存在差异。

spark2中包含以下内容:

createOrReplaceTempView()
createTempView()
createOrReplaceGlobalTempView()
createGlobalView()

saveAsTable is deprecated in spark 2.

基本上,这些内容取决于表的可用性。 请参阅link

答案 6 :(得分:-1)

  

saveAsTable(String tableName)

     

将DataFrame的内容另存为指定表。

仅供参考-> https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html