保存ORC格式的spark-rdd



我正在尝试将RDD保存为orc格式。

  val data: RDD[MyObject] = createMyData()
  val sqlContext = new SQLContext(sc)
  import sqlContext.implicits._
  data.toDF.write.format("orc").save(outputPath)

它编译得很好,但不起作用。我得到以下异常:

 ERROR ApplicationMaster: User class threw exception: java.lang.AssertionError: assertion failed: The ORC data source can only be used with HiveContext.
 java.lang.AssertionError: assertion failed: The ORC data source can only be used with HiveContext.

我想避免使用hive来做这件事,因为我的数据在hdfs中,它与任何hive表都不相关。有什么变通办法吗?它适用于Parquet格式。提前谢谢。

在持久存储区域(如HDFS)中持久化ORC格式仅适用于HiveContext。

作为一种替代方法(变通方法),您可以将其注册为临时表。类似这样的东西:-

DataFrame.write.mode("overwrite").orc("myDF.orc")
val orcDF = sqlCtx.read.orc("myDF.orc")
orcDF.registerTempTable("<Table Name>")

目前,保存为orc只能通过HiveContext完成。

所以方法是这样的:

import sqlContext.implicits._ 
val data: RDD[MyObject] = createMyData()
val sqlContext = new New Org.Apache.Spark.Sql.Hive.HiveContext(Sc)   
data.toDF.write.format("orc").save(outputPath)

最新更新