2016-03-31 8 views
0

寄木張りの形式で格納されているHiveからテーブルを読み込もうとしています(これはImpalaです)。私はSpark 1.3.0とHiveContextを使用します。SparkSQLとHiveContextで寄木細工ファイルを読み込む際にエラーが発生しました

テーブルのスキーマは次のとおりです。

(a,DoubleType) 
(b,DoubleType) 
(c,IntegerType) 
(d,StringType) 
(e,DecimalType(18,0)) 

私のコードは次のとおりです。

val sc = new SparkContext(conf) 
val hc = new HiveContext(sc) 
import hc.implicits._ 
import hc.sql 
val df: DataFrame = hc.table(mytable) 

トレースログのエラーは次のとおりです。

16/03/31 11:33:34 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, cloudera-smm-2.desa.taiif.aeat): java.lang.ClassCastException: scala.runtime.BoxedUnit cannot be cast to org.apache.spark.sql.types.Decimal 
at org.apache.spark.sql.types.Decimal$DecimalIsFractional$.toDouble(Decimal.scala:330) 
at org.apache.spark.sql.catalyst.expressions.Cast$$anonfun$castToDouble$5.apply(Cast.scala:361) 
at org.apache.spark.sql.catalyst.expressions.Cast$$anonfun$castToDouble$5.apply(Cast.scala:361) 
at org.apache.spark.sql.catalyst.expressions.Cast.eval(Cast.scala:426) 
at org.apache.spark.sql.catalyst.expressions.Alias.eval(namedExpressions.scala:105) 
at org.apache.spark.sql.catalyst.expressions.InterpretedMutableProjection.apply(Projection.scala:68) 
at org.apache.spark.sql.catalyst.expressions.InterpretedMutableProjection.apply(Projection.scala:52) 
at scala.collection.Iterator$$anon$11.next(Iterator.scala:328) 
... 

小数形式ではないようです正しくキャストされている。何か案は?

答えて

0

SparkSQLがHiveの既存のメタストアを使用する代わりに、組み込みのメタストアを使用していたという問題がありました。

あなたはに、このプロパティを設定する必要があります。

hc.setConf("spark.sql.hive.convertMetastoreParquet", "false") 
関連する問題