gpt4 book ai didi

r - sparklyr 我可以将格式和路径选项传递给 spark_write_table 吗?还是将 saveAsTable 与 spark_write_orc 一起使用?

转载 作者:行者123 更新时间:2023-12-04 12:17:02 28 4
gpt4 key购买 nike

带有 Hive 的 Spark 2.0

假设我正在尝试编写一个 spark 数据帧,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'
)

但这不允许我设置 pathformat
我也可以使用 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")

但我想知道是否有办法改为通过 formatpath选项到 spark_write_tablesaveAsTable选项进入 spark_write_orc ?

最佳答案

path可以使用 options 设置参数,相当于options调用 native DataFrameWriter :

spark_write_table(
iris_spark, name = 'my_database.iris', mode = 'overwrite',
options = list(path = "s3a://my_bucket/iris/")
)

默认情况下,在 Spark 中,这将创建一个存储为 Parquet 的表。在 path (可以使用 partition_by 参数指定分区子目录)。

到今天为止,没有这样的格式选项,但一个简单的解决方法是设置 spark.sessionState.conf.defaultDataSourceName属性,无论是在运行时
spark_session_config(
sc, "spark.sessionState.conf.defaultDataSourceName", "orc"
)

或者当您创建 session 时。

关于r - sparklyr 我可以将格式和路径选项传递给 spark_write_table 吗?还是将 saveAsTable 与 spark_write_orc 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51886236/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com