Spark:可以使用 DataFrame.saveAsTable 或 DataFrameWriter.options 传递哪些选项?
Posted
技术标签:
【中文标题】Spark:可以使用 DataFrame.saveAsTable 或 DataFrameWriter.options 传递哪些选项?【英文标题】:Spark: what options can be passed with DataFrame.saveAsTable or DataFrameWriter.options? 【发布时间】:2015-10-07 20:23:23 【问题描述】:无论是开发人员还是 API 文档都没有包含任何关于可以在 DataFrame.saveAsTable
或 DataFrameWriter.options
中传递哪些选项的参考,它们会影响 Hive 表的保存。
我希望在这个问题的答案中,我们可以汇总信息,这些信息对希望更多控制 Spark 保存表的方式的 Spark 开发人员有所帮助,或许还可以为改进 Spark 的文档提供基础。
【问题讨论】:
不过,这对于 SO 来说有点模糊和开放。你在找什么?只是如何保存到蜂巢? @JustinPihony 我知道有人会误读标题。我对其进行了更新以使其更加明确。谢谢你的评论。需要明确的是,问题不在于如何保存 Hive 表。这是关于在保存 Hive 表时可以传递的未记录选项。 DataFrameWriter 可用的所有选项,我们可以传递给选项,例如格式、模式、partitionBy 等。顺便说一句,您正在寻找哪个选项? 【参考方案1】:您没有在任何地方看到 options
记录的原因是它们是特定于格式的,开发人员可以使用一组新的 options
继续创建自定义写入格式。
但是,对于少数支持的格式,我列出了 spark 代码本身中提到的选项:
CSVOptions JDBCOptions JSONOptions ParquetOptions TextOptions OrcOptions AvroOptions【讨论】:
【参考方案2】:看看https://github.com/delta-io/delta/blob/master/src/main/scala/org/apache/spark/sql/delta/DeltaOptions.scala类“DeltaOptions”
目前,支持的选项有:
替换位置 合并架构 覆盖架构 maxFilesPerTrigger 排除正则表达式 忽略文件删除 忽略更改 忽略删除 优化写入 数据变化 查询名称 检查点位置 路径 timestampAsOf versionAsOf【讨论】:
随着 Delta Lake 人气的增长,很高兴将 Delta 选项带入其中。【参考方案3】:根据源码可以指定path
选项(表示hdfs中hive外部数据的存储位置,在Hive DDL中翻译为'location')。
不确定您是否还有其他与 saveAsTable 相关的选项,但我会寻找更多。
【讨论】:
【参考方案4】:根据最新的 spark 文档,以下是使用 .saveAsTable(name, format=None, mode=None, partitionBy=None, **options) API 将 DataFrame 写入外部存储时可以传递的选项
如果您单击文档右侧的source 超链接,您可以遍历并找到其他不太明确的论点的详细信息 例如。 format 和 options 在 DataFrameWriter 类下描述
所以当文档读取options – all other string options
时,它指的是options,它为您提供了spark 2.4.4
的以下选项
timeZone:设置用于格式化的时区字符串 JSON/CSV 数据源或分区值中的时间戳。如果未设置,则使用默认值,会话本地时区。
当它读取format – the format used to save
时,它指的是format(source)
指定底层输出数据源。
参数
源 - 字符串,
数据源的名称,例如“json”、“镶木地板”。
希望这会有所帮助。
【讨论】:
这些只是 Python API 的一种方法的选项;还有更多。【参考方案5】:版本之间的区别。
我们在 spark2 中有以下内容:
createOrReplaceTempView()
createTempView()
createOrReplaceGlobalTempView()
createGlobalView()
saveAsTable is deprecated in spark 2.
基本上这些是根据桌子的可用性来划分的。 请参考link
【讨论】:
问题似乎集中在可以将哪些选项传递给此类表,而不是可用于注册临时表(视图)的所有方法【参考方案6】:saveAsTable(字符串表名)
将DataFrame的内容保存为指定的表格。
仅供参考 -> https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/DataFrameWriter.html
【讨论】:
OP 特别想知道作为 DataFrameWriter 类的选项方法一部分的各种可用选项。这个 def 具体是:spark.apache.org/docs/2.3.0/api/java/org/apache/spark/sql/…以上是关于Spark:可以使用 DataFrame.saveAsTable 或 DataFrameWriter.options 传递哪些选项?的主要内容,如果未能解决你的问题,请参考以下文章
我们可以使用 spark-sql 或 apache spark 运行 sqoop 导入语句吗
是否可以将 Spark 中的 data.table 与 Spark Dataframes 一起使用?