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

27
开发者和 API 文档都没有提到在调用 DataFrame.saveAsTableDataFrameWriter.options 时可以传递哪些选项,并且这些选项会如何影响保存到 Hive 表中的数据。
我希望通过这个问题的回答,我们可以收集有助于 Spark 开发者更好地控制 Spark 如何保存表的信息,也许可以为改进 Spark 的文档提供基础。

这对于 Stack Overflow 来说有点含糊和开放性。你要找什么?只是想知道如何保存到Hive吗? - Justin Pihony
@JustinPihony 我明白有人可能会误读标题。我已经更新了它,使其更加明确。感谢您的评论。需要明确的是,这个问题不是关于如何保存Hive表格,而是关于在保存Hive表格时可以传递的未记录选项。 - Sim
所有可用于DataFrameWriter的选项都可以作为选项传递,例如格式、模式、partitionBy等。顺便问一下,你要查看哪个选项? - hayat
6个回答

6

4

1
随着Delta Lake的普及,将Delta选项引入其中是一个不错的选择。 - Sim
1
新链接:https://github.com/delta-io/delta/blob/master/core/src/main/scala/org/apache/spark/sql/delta/DeltaOptions.scala - Melkor.cz

0
根据源代码,您可以指定path选项(表示在HDFS中存储hive外部数据的位置,在Hive DDL中翻译为“location”)。 不确定您是否有与saveAsTable相关的其他选项,但我会继续搜索。

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'。

希望这有所帮助。


这些只是Python API的一种方法的选项;还有许多其他选项。 - Sim

-3

这个版本之间的区别。

我们在spark2中有以下内容:

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

saveAsTable is deprecated in spark 2.

基本上,这些是根据表的可用性进行划分的。 请参考链接


1
这个问题似乎集中在可以传递给这些表的选项上,而不是可以用于注册临时表(视图)的所有方法。 - SilviuC

-3

OP 特别想知道 DataFrameWriter 类的 options 方法中可用的各种选项。具体而言,参见以下链接: https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html#options-scala.collection.Map- - Vivek Sethi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接