带Hive的spark 2.0
假设我想写一个sparkDataframe, irisDf
将其保存到Hive元存储
在spark我会这样做,
irisDf.write.format("orc")
.mode("overwrite")
.option("path", "s3://my_bucket/iris/")
.saveAsTable("my_database.iris")
在 sparklyr
我可以使用 spark_write_table
功能,
data("iris")
iris_spark <- copy_to(sc, iris, name = "iris")
output <- spark_write_table(
iris
,name = 'my_database.iris'
,mode = 'overwrite'
)
但这不允许我设置 path
或者 format
我也可以用 spark_write_orc
```
spark_write_orc(
iris
, path = "s3://my_bucket/iris/"
, mode = "overwrite"
)
但它没有 `saveAsTable` 选项
现在,我可以用 `invoke` 复制spark代码的语句,
sdf <- spark_dataframe(iris_spark)
writer <- invoke(sdf, "write")
writer %>%
invoke('format', 'orc') %>%
invoke('mode', 'overwrite') %>%
invoke('option','path', "s3://my_bucket/iris/") %>%
invoke('saveAsTable',"my_database.iris")
但我想知道是否有什么办法来代替通过考试 `format` 以及 `path` 选项到 `spark_write_table` 或者 `saveAsTable` 期权转入 `spark_write_orc` ?
2条答案
按热度按时间k97glaaz1#
这个
spark.sessionState.conf.defaultDataSourceName
是在spark 2.2中引入的,可以在这里找到源代码。在spark 2.1.1中,设置此选项(在连接前的配置或运行时中)对我有效:
ifsvaxew2#
path
可以使用options
参数,相当于options
打电话给本地人DataFrameWriter
:默认情况下,在spark中,这将创建一个存储为parquet的表
path
(分区子目录可以用partition_by
参数)。到目前为止,还没有这样的格式选项,但是一个简单的解决方法是设置
spark.sessionState.conf.defaultDataSourceName
属性,无论是在运行时或者在创建会话时。