2017-12-15 8 views
0

ArrayおよびArrayのような複雑なデータ型の列を持つテーブルを扱うときにSpark 2でCastClassExceptionを取得する私が試したSpark 2でCastClassExceptionが発生する:java.lang.ClassCastException:java.util.ArrayListをorg.apache.hadoop.io.Textにキャストすることができない

アクションは単純なものである:カウント

df=spark.sql("select * from <tablename>") 
df.count  

が、スパークアプリケーション

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 2.0 failed 4 times, most recent failure: Lost task 0.3 in stage 2.0 (TID 5, sandbox.hortonworks.com, executor 1): java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.apache.hadoop.io.Text 
at org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableStringObjectInspector.getPrimitiveWritableObject(WritableStringObjectInspector.java:41) 
at org.apache.spark.sql.hive.HiveInspectors$$anonfun$unwrapperFor$23.apply(HiveInspectors.scala:529) 
at org.apache.spark.sql.hive.HadoopTableReader$$anonfun$14$$anonfun$apply$15.apply(TableReader.scala:419) 
at org.apache.spark.sql.hive.HadoopTableReader$$anonfun$14$$anonfun$apply$15.apply(TableReader.scala:419) 
at org.apache.spark.sql.hive.HadoopTableReader$$anonfun$fillObject$2.apply(TableReader.scala:435) 
at org.apache.spark.sql.hive.HadoopTableReader$$anonfun$fillObject$2.apply(TableReader.scala:426) 
at scala.collection.Iterator$$anon$11.next(Iterator.scala:409) 
at scala.collection.Iterator$$anon$11.next(Iterator.scala:409) 

奇妙トンを実行すると、エラーの下になって

|-- sku_product: array (nullable = true) 
| |-- element: struct (containsNull = true) 
| | |-- sku_id: string (nullable = true) 
| | |-- qty: string (nullable = true) 
| | |-- price: string (nullable = true) 
| | |-- display_name: string (nullable = true) 
| | |-- sku_displ_clr_desc: string (nullable = true) 
| | |-- sku_sz_desc: string (nullable = true) 
| | |-- parent_product_id: string (nullable = true) 
| | |-- delivery_mthd: string (nullable = true) 
| | |-- pick_up_store_id: string (nullable = true) 
| | |-- delivery: string (nullable = true) 
|-- hitid_low: string (nullable = true) 
|-- evar7: array (nullable = true) 
| |-- element: string (containsNull = true) 
|-- hitid_high: string (nullable = true) 
|-- evar60: array (nullable = true) 
| |-- element: string (containsNull = true) 

は、任意のより詳細な情報が必要な場合は私に知らせてください:興はspark-shellにおけるデータフレームの同じアクションは細かい

表は以下の複雑な列を持って取り組んでいる、です。

答えて

0

私は同様の問題がありました。私は、寄木張りのファイルでスパーク2.1を使用していました。 寄木細工のファイルの1つが他のものとは異なるスキーマを持っていることを発見しました。だから私はすべてを読み込もうとすると、キャストエラーが出ます。 これを解決するために、ファイルごとにチェックしました。

+0

しかし、テーブルはorcとして保存されていますが、何か知っていれば分かち合ってください。 – SD098

+0

私はORCに精通していません。テーブルとして保存するか、ファイルを保存するAPIを使用していますか?テーブルとして保存を使用している場合は、spark apiで保護する必要があるためです –

関連する問題