将 spark 数据帧转换为 sparklyR 表“tbl_spark”
Posted
技术标签:
【中文标题】将 spark 数据帧转换为 sparklyR 表“tbl_spark”【英文标题】:Convert spark dataframe to sparklyR table "tbl_spark" 【发布时间】:2018-06-25 14:32:40 【问题描述】:我正在尝试将 spark 数据帧 org.apache.spark.sql.DataFrame
转换为 sparklyr 表 tbl_spark
。我尝试使用sdf_register
,但失败并出现以下错误。
在这里,df 是 spark 数据帧。
sdf_register(df, name = "my_tbl")
错误是,
Error: org.apache.spark.sql.AnalysisException: Table not found: my_tbl; line 2 pos 17
at org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:42)
at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.getTable(Analyzer.scala:306)
at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$9.applyOrElse(Analyzer.scala:315)
at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$$anonfun$apply$9.applyOrElse(Analyzer.scala:310)
at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:57)
at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$resolveOperators$1.apply(LogicalPlan.scala:57)
at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:69)
at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolveOperators(LogicalPlan.scala:56)
at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$1.apply(LogicalPlan.scala:54)
at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan$$anonfun$1.apply(LogicalPlan.scala:54)
at org.apache.spark.sql.catalyst.trees.TreeNode$$anonfun$4.apply(TreeNode.scala:281)
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
我错过了什么吗?或者有没有更好的方法将其转换为tbl_spark
?
谢谢!
【问题讨论】:
请发帖minimal reproducible example。仅此一段代码不会导致异常。 【参考方案1】:使用sdf_copy_to()
或dplyr::copy_to()
,例如my_tbl <- sdf_copy_to(sc, df, "my_tbl")
【讨论】:
以上是关于将 spark 数据帧转换为 sparklyR 表“tbl_spark”的主要内容,如果未能解决你的问题,请参考以下文章
在 R 和 Sparklyr 中,将表写入 .CSV (spark_write_csv) 会产生许多文件,而不是一个文件。为啥?我可以改变吗?