Spark:DataFrame.saveAsTable 或 DataFrameWriter.options 可以传递哪些选项?
Spark: what options can be passed with DataFrame.saveAsTable or DataFrameWriter.options?
开发人员和 API 文档均未包含有关可以在 DataFrame.saveAsTable
或 DataFrameWriter.options
中传递哪些选项的任何参考,它们会影响 Hive 的保存 table.
我希望在这个问题的答案中,我们可以汇总有助于 Spark 开发人员的信息,这些开发人员希望更好地控制 Spark 如何保存 tables,并且也许可以为改进 Spark 的文档。
版本之间的区别。
我们在spark2中有以下内容:
createOrReplaceTempView()
createTempView()
createOrReplaceGlobalTempView()
createGlobalView()
saveAsTable is deprecated in spark 2.
基本上这些都是根据table的可用性来划分的。
请参考link
saveAsTable(String tableName)
Saves the content of the DataFrame as the specified table.
仅供参考 -> https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html
根据源代码可以指定path
选项(表示在hdfs中存储hive外部数据的位置,在Hive DDL中翻译为'location')。
不确定您还有其他与 saveAsTable 关联的选项,但我会搜索更多。
根据最新的 spark 文档,以下是使用 .saveAsTable(name, format=None, mode=None, partitionBy=None, **options) API
将 DataFrame 写入外部存储时可以传递的选项
如果您单击文档右侧的 source 超链接,您可以遍历并找到其他不太清楚的参数的详细信息
例如。 format and options在classDataFrameWriter
下有描述
所以当文档显示为 options – all other string options
时,它指的是 options,这为您提供了以下关于 spark 2.4.4
的选项
timeZone: sets the string that indicates a timezone to be used to format
timestamps in the JSON/CSV datasources or partition values. If it isn’t set, it uses the default value, session local timezone.
当它显示为 format – the format used to save
时,它指的是 format(source)
Specifies the underlying output data source.
参数
source – string,
name of the data source, e.g. ‘json’, ‘parquet’.
希望这对您有所帮助。
您在任何地方都看不到 options
的原因是它们是特定于格式的,开发人员可以使用一组新的 options
.
继续创建自定义写入格式
但是,对于少数支持的格式,我列出了 spark 代码本身中提到的选项:
看看 https://github.com/delta-io/delta/blob/master/src/main/scala/org/apache/spark/sql/delta/DeltaOptions.scala class“DeltaOptions”
目前支持的选项有:
- replaceWhere
- 合并架构
- 覆盖架构
- maxFilesPerTrigger
- 排除正则表达式
- 忽略文件删除
- 忽略更改
- 忽略删除
- 优化写入
- 数据变化
- 查询名称
- 检查点位置
- 路径
- 时间戳
- versionAsOf
开发人员和 API 文档均未包含有关可以在 DataFrame.saveAsTable
或 DataFrameWriter.options
中传递哪些选项的任何参考,它们会影响 Hive 的保存 table.
我希望在这个问题的答案中,我们可以汇总有助于 Spark 开发人员的信息,这些开发人员希望更好地控制 Spark 如何保存 tables,并且也许可以为改进 Spark 的文档。
版本之间的区别。
我们在spark2中有以下内容:
createOrReplaceTempView()
createTempView()
createOrReplaceGlobalTempView()
createGlobalView()
saveAsTable is deprecated in spark 2.
基本上这些都是根据table的可用性来划分的。 请参考link
saveAsTable(String tableName)
Saves the content of the DataFrame as the specified table.
仅供参考 -> https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html
根据源代码可以指定path
选项(表示在hdfs中存储hive外部数据的位置,在Hive DDL中翻译为'location')。
不确定您还有其他与 saveAsTable 关联的选项,但我会搜索更多。
根据最新的 spark 文档,以下是使用 .saveAsTable(name, format=None, mode=None, partitionBy=None, **options) API
将 DataFrame 写入外部存储时可以传递的选项如果您单击文档右侧的 source 超链接,您可以遍历并找到其他不太清楚的参数的详细信息 例如。 format and options在classDataFrameWriter
下有描述所以当文档显示为 options – all other string options
时,它指的是 options,这为您提供了以下关于 spark 2.4.4
timeZone: sets the string that indicates a timezone to be used to format timestamps in the JSON/CSV datasources or partition values. If it isn’t set, it uses the default value, session local timezone.
当它显示为 format – the format used to save
时,它指的是 format(source)
Specifies the underlying output data source.
参数
source – string,
name of the data source, e.g. ‘json’, ‘parquet’.
希望这对您有所帮助。
您在任何地方都看不到 options
的原因是它们是特定于格式的,开发人员可以使用一组新的 options
.
但是,对于少数支持的格式,我列出了 spark 代码本身中提到的选项:
看看 https://github.com/delta-io/delta/blob/master/src/main/scala/org/apache/spark/sql/delta/DeltaOptions.scala class“DeltaOptions”
目前支持的选项有:
- replaceWhere
- 合并架构
- 覆盖架构
- maxFilesPerTrigger
- 排除正则表达式
- 忽略文件删除
- 忽略更改
- 忽略删除
- 优化写入
- 数据变化
- 查询名称
- 检查点位置
- 路径
- 时间戳
- versionAsOf