2

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.

私のデータはhdfsにあり、どのハイブテーブルにも関連していないため、これを行うためにハイブを使用することは避けたいと思います。回避策はありますか?Parquet 形式では問題なく動作します。前もって感謝します。

4

2 に答える 2

2

永続的なストレージ領域 (HDFS など) での ORC 形式の永続化は、HiveContext でのみ使用できます。

代替(回避策)として、一時テーブルとして登録できます。このようなもの: -

DataFrame.write.mode("overwrite").orc("myDF.orc")
val orcDF = sqlCtx.read.orc("myDF.orc")
orcDF.registerTempTable("<Table Name>")
于 2015-11-29T01:24:12.200 に答える